在 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”),这将根据不同的契约创建子进程。这样做可以防止在父进程被终止时子进程也被终止。