【发布时间】:2015-11-23 07:02:50
【问题描述】:
我的应用是 rails 和 python 。
在 Rails 中,我创建了一个新线程并启动了一个执行 python 脚本的 shell 命令。 这个python脚本(父进程)会很快退出,但是在退出之前会fork一个子进程,父进程退出后子进程就是孤儿进程。
情况1:
如果我通过 rails 启动应用程序:rails s -d
当python父进程退出并且python子进程正在运行时:
kill pid(./tmp/pids/server.pid)
那么子进程就ok了,不会被杀掉。这就是我想要的。
情况2:
如果我按乘客启动应用程序:
passenger start -e production -d
当python父进程退出并且python子进程正在运行时:
passenger stop;
然后子进程将被杀死。
所以我想知道在情况2中,子孤儿进程无法被杀死?有没有人经历过或者知道如何解决?
【问题讨论】:
-
我发现这是因为乘客使我的 python 脚本和PassengerHelperAgent 具有相同的组进程ID。所以当乘客停止时,它会杀死所有与PassengerHelperAgent 组进程ID 相同的进程。 reference link 但我不知道如何防止乘客不杀我的脚本。
标签: python ruby-on-rails linux