这是我的脚本(run.sh
):
rm -f nohup.out
nohup myproc &
tailf nohup.out
如果我运行脚本(
sh run.sh
),然后按control-c,myproc
将终止,但是如果我注释
tailf nohup.out
部分,myproc
将按预期在后台运行。我做错什么了吗?
最佳答案
问题不是SIGHUP
(这nohup
会被捕获),而是SIGINT
通过按control-c发送。这会传播到您的进程。
有关更多详细信息,请参见此blog post。
根据我在那篇文章中读到的内容,你可以把代码改成这样:
setsid myproc 1> output.log 2>&1 &
tail -f output.log
如果您不想使用自己的输出重定向,您仍然可以使用
nohup
:setsid nohup ping -c 30 localhost &
tail -f nohup.out
希望这有帮助!
关于linux - 使用tailf时Linux nohup进程终止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23484857/