通过runit杀死领班子进程

时间:2015-10-07 22:17:16

标签: ruby foreman sigint sigterm runit

我正在使用runit进行流程监督。我有一个服务的简单运行脚本:

#!/bin/sh -e
cd /opt/myapp
exec 2>&1
exec chpst -u ubuntu /home/ubuntu/.rvm/bin/myapp_foreman start -t 1 -c web=1,worker=1

这将使用RVM包装器启动使用适当的RVM环境包装的foreman。一切都开始并运行良好,但是当我发出sv down myapp时,我可以在日志中看到工头报告接收SIGTERM并且工头流程终止,但子网络和工作进程继续运行。

如果我只是使用kill而不是runit手动将SIGTERM发送给工头,也会发生此问题,因此可能不是特定于runit的。但是,如果我以交互方式运行foreman然后执行C-c以发送正常工作的SIGINT。但是,通过kill发送SIGINT和SIGKILL不起作用。

有没有办法让我的工头在非交互式运行时终止其子进程,就像我在我的runit脚本中一样?

0 个答案:

没有答案