我有一个脚本script.sh
,我想从Ruby(Rails 3)开始和停止。该脚本启动了很多子进程,所以我用
pid = Process.spawn(script.sh, :pgroup => true)
通过这种方式我可以通过
杀死它和它的所有孩子Process.kill(9,-Process.getpgid(pid))
如Killing process group from Ruby kills my whole computer中所述。
这在Ubuntu上工作正常,但是在CentOS 7上这项工作已经不行了。如果我通过
检查所有子进程ps xao pid,pgid,ppid,cmd
我在Ubuntu中看到列表中的所有pgid
都是相同的,而在CentOS上,孩子们将父母的pid
作为pgid
继承,而他们应该继承父母pgid
。