出于什么原因 nohup 不能在特定的内部开发流程上工作?
我使用它如下:
/usr/bin/nohup process_a &
我可以关闭执行它的终端,看看它仍在通过 ps 运行。但是,在注销并重新登录后,该过程不再运行。
我可以在不同的内部开发的 process_b 上运行相同的 nohup 命令,并且注销并重新登录不会结束该进程。它仍在运行。
我想知道 process_a 有什么“特别”之处,以至于它无法在注销并重新登录后幸存下来。进程 a 和 b 都打开一个 TCP 服务器套接字,并且还具有用于日志记录的打开文件描述符。
我试过使用 bash、tcsh 和 zsh shell,结果都一样。
出于什么原因,在 nohup 下运行的一个进程会在注销/登录后幸存下来,而另一个则不会?我假设开发人员可以更改代码中的某些内容。
我们在相当严格的环境中运行 RHEL 6(screen、tmux 等不是可用的替代品)。
更新:
process_a 在以下情况下幸存下来
杀死 -s HUP PID
因此在这种情况下,似乎通过 nohup 成功处理了 SIGHUP。它仍然在注销时死亡。