如何防止nohup“堵塞”命令行?

时间:2016-04-11 15:46:51

标签: bash background-process nohup

我想编写一个在后台运行两个命令的bash脚本。我正在使用nohup:

nohup cmd1 &
nohup cmd2 &

但是,只有第一个命令在后台运行。

当我在命令行中手动运行nohup cmd1 &时。首先,我输入nohup cmd1 &然后按Enter键;这开始了这个过程:

enter image description here

但是,我需要再次输入 才能输入另一个命令:

enter image description here

我认为这会“堵塞”命令行,导致我的bash脚本陷入第一个nohup ... &命令。

有没有办法阻止这种情况?

2 个答案:

答案 0 :(得分:2)

没有什么是“堵塞”的。在后台运行的第一个命令在 shell打印下一个提示后打印一些输出。即使光标不再与提示符在同一行,shell也在等待您键入命令。额外的 Enter 是一个空命令,导致shell打印另一个提示符。这是无害的,但没必要。

答案 1 :(得分:0)

让我向nohup说些什么,因为我不确定你是否确定它在做什么。简而言之,在后台运行进程不需要nohup命令。该行末尾的&符是这样做的。

如果您关闭启动shell运行它的终端,

nohup会阻止后台进程接收SIGHUP挂断的hup)。 SIGHUP将有效终止该过程。

如果以nohup启动,则进程将不会收到该事件并将继续运行,如果终端将被关闭,则由init进程(pid 1)拥有。

此外,nohup命令会将受控进程的标准输出重定向到文件,这意味着它不再出现在屏幕上。默认情况下,此文件名为nohup.out