这是我的脚本(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/

10-13 00:57