Solaris SMF:杀死自定义信号,或获取PID,或防止杀死儿童

在Solaris Service XML中

我正在使用kill来表示正常关机

<exec_method type="method" name="stop" exec=":kill" timeout_seconds="60" /> 

这样做效果很好,除了它也杀死了subprocess,这些进程大部分是在SIGTERM之后死掉的。 任何这些都可以工作

  • 获取PID,所以我可以使用exec="kill -SIGUSR1 $PID"
  • 防止将SIGTERM发送给孩子。 (或至less不是孙子)
  • 使用其他信号

我宁愿不build立一个单独的脚本,必须找出pid。 如果必须,我会这样做。 我宁愿从环境variables中获取它,或者使用内置的SMF命令。

exec=":kill -USR1"这个技巧。 没有SIG

我在定义method="refresh"时正在寻找这个。 jperkin直接以他的exec=":kill -HUP"为例,而在SmartOS上使用exec=":kill -SIGHUP"导致"/sbin/sh[1]: exec: :kill: not found"

相当肯定你可以做exec="kill -SIGUSR1"

这是因为父母双方都有同样的合同(更多信息请参阅“男性合同”)

利用“ctrun”(“man ctrun”获取更多信息),这将在不同的合同下创buildsubprocess。 这样做可以防止孩子在家长死亡时被杀害。