我正在帮助一位同事,他的后台进程间歇性地死了。
我发现他们通过登录服务器并执行以下操作来启动后台进程:
su - <user> -c '<command>' &
我大叫“啊哈”。“如果使用“&”启动命令,则退出控制终端时它将挂断。您需要使用诸如nohup之类的方法来实现此目的。确实,此过程需要支持作为守护程序运行,tut tut。
我们测试了上面的命令以证明我的观点,并且...似乎起作用了:当我们退出运行上述命令的终端时,由命令启动的过程并未退出。
command是一个自定义Python脚本,其输出将发送到文件。据我所知,脚本中没有智能化的“守护进程”功能。它不执行在Wikipedia:守护程序(计算):创建页面中列出的作为守护程序运行所需的任何操作。
像这样运行命令的行为符合预期:
<command> &
exit
在上述情况下,当我们退出终端时,由命令启动的后台进程将退出。
我的问题是这样的:
当我们添加“ su--c&”阻止终端退出时进程退出时,会发生什么情况。我想详细了解控制端子,标准输入和输出等。
这是实现将此命令作为后台进程运行的目标的合理方法。如果不是,为什么呢?
我想在公司内部传播最佳做法,但是我需要能够证明和支持我提出的任何建议。
我也想了解到底发生了什么。
chroot --userspec root:root / sh -c "exec some_forever_process" &
。作业正在以同一用户身份运行,nohup
之前或disown
之后没有明确显示。那么,对于这种情况,如何在学期退出时无法传递信号呢?