一尘不染

nohup和&符有什么区别

linux

两者nohup myprocess.out &myprocess.out &将myprocess.out设置为在后台运行。关闭终端后,该过程仍在运行。它们之间有什么区别?


阅读 352

收藏
2020-06-02

共1个答案

一尘不染

nohup捕获挂断信号(请参阅参考资料man 7 signal),而&则不捕获(除非shell以这种方式配置或根本不发送SIGHUP)。

通常,当使用此命令运行&并退出Shell之后,Shell将以挂断信号(kill-SIGHUP<pid>)终止子命令。可以使用来防止这种情况nohup,因为它会捕获信号并忽略该信号,因此它永远不会到达实际应用程序。

如果您使用的是bash,则可以使用命令shopt|grephupon来查找shell是否将SIGHUP发送到其子进程。如果关闭,进程将不会终止,这对您来说似乎就是这种情况。。

2020-06-02