Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 通过runit杀死foreman子进程_Ruby_Foreman_Sigint_Sigterm_Runit - Fatal编程技术网

Ruby 通过runit杀死foreman子进程

Ruby 通过runit杀死foreman子进程,ruby,foreman,sigint,sigterm,runit,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时,我可以在日志中看到foreman报告接收到SIGTE

我使用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
时,我可以在日志中看到foreman报告接收到SIGTERM,foreman进程终止,但子web和worker进程继续运行

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

有没有一种方法可以让foreman在以非交互方式运行时终止其子进程,就像我在runit脚本中所做的那样