Solaris SMF:使用自定义信号终止,或获取 PID,或防止终止子进程

Solaris SMF:使用自定义信号终止,或获取 PID,或防止终止子进程

在 Solaris 服务 XML 中

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

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

这个方法很好用,除了它也会杀死子进程,这些子进程大多在 SIGTERM 之后就死了。这些方法都可以

  • 获取 PID,以便我可以使用exec="kill -SIGUSR1 $PID"
  • 防止将 SIGTERM 发送给子代(或者至少不发送给孙代)
  • 使用其他信号

我宁愿不设置一个单独的脚本来找出 pid。如果有必要,我会这样做。我宁愿从环境变量中获取它,或者使用 SMF 内置命令。

答案1

exec=":kill -USR1"成功了。没有SIG

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

答案2

确信你就能做到exec="kill -SIGUSR1"

答案3

这是因为父母和孩子都受同一份合同约束(有关更多信息,请参阅“男性合同”)

使用“ctrun”(有关详细信息,请参阅“man ctrun”),这将根据不同的契约创建子进程。这样做可以防止在父进程被终止时子进程也被终止。

相关内容