2016-04-11 50 views
0

我想編寫一個在後臺運行兩個命令的bash腳本。我正在使用nohup:如何防止nohup「堵塞」命令行?

nohup cmd1 & 
nohup cmd2 & 

但是,只有第一個命令在後臺運行。

當我在命令行中手動運行nohup cmd1 &。首先,我輸入nohup cmd1 &然後回車;這個啓動過程:

enter image description here

但是,我需要打再次輸入能夠輸入另一個命令:

enter image description here

我認爲這是「堵塞」了命令行,並導致我的bash腳本卡在第一個nohup ... &命令。

有沒有辦法來防止這種情況?

+0

你可以嘗試類似:睡眠5'在他nohup命令? – ryekayo

+0

@ryekayo它會永遠堵塞,而不是5秒。 – applecider

+0

有沒有必要擊中輸入;移動光標的文本令人不安,但無害。 – tripleee

回答

2

沒有什麼是「堵塞」。在後臺運行的第一條命令在之後打印一些輸出,您的shell將打印其下一個提示。即使遊標與提示不再位於同一行,shell仍在等待您輸入命令。多餘的輸入是一個空的命令,導致shell打印另一個提示。這是無害的,但沒有必要。

0

讓我對nohup說些什麼,因爲我不確定您是否確定它在做什麼。簡而言之,nohup命令不需要在後臺運行進程。行尾的&符號就是這樣做的。

nohup防止接收SIGHUP(HUP爲掛斷)如果關閉其中起始殼運行它的終端的後臺進程。 SIGHUP將有效終止該過程。

如果從nohup開始,進程將不會收到該事件,並且如果終端將被關閉,將繼續運行,並由init進程擁有(pid 1)。

此外nohup命令會將受控進程的標準輸出重定向到一個文件,這意味着它不會再出現在屏幕上。默認情況下,該文件被稱爲nohup.out