【问题标题】:passenger stop kill orphan process乘客停止杀死孤儿进程
【发布时间】: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


【解决方案1】:

我已经解决了我的问题 重新启动我的应用程序而不是重新启动乘客 重启应用命令:passenger-config restart-app [我的应用路径]

【讨论】:

    猜你喜欢
    • 2017-01-18
    • 1970-01-01
    • 2012-12-08
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多