2011-06-13 179 views
4

我需要通過自身與一組不同的論點,即會使其運行作爲後臺進程調用bash腳本,所以我使用的是這樣的:本身調用bash腳本

if [[ $a == $b ]] 
then 
    $0 -v &> /dev/null 
fi 

問題雖然我使用'&'作爲後綴調用相同的腳本作爲後綴並將所有輸出重定向到/ dev/null,但是我調用該腳本的終端沒有被釋放,我假設這是因爲腳本最初被調用的過程是作爲前臺進程運行的,因此查詢是如何自行調用bash腳本,以便當它自己調用負責運行第一個腳本的進程時e被殺死,控制檯被釋放,第二次調用自己作爲後臺進程運行?

回答

13

您沒有使用&作爲後臺進程運行它。 &>是一個完全獨立的令牌,可以同時重定向stdout和stderr。如果你想把這個命令放在後臺,它會是$0 -v &>/dev/null &

4

嘗試這樣:

nohup $0 -v & 

nohup命令不脫離後臺作業和忽略信號的工作,請參見手冊頁。

+0

我認爲如果你向OP&>解釋,你的答案會更好,因爲他的假設是錯誤的。儘管你對這個命令的回答也很好。可能它應該有stdout,stderr也應該重定向到/ dev/null。 – Jasonw 2011-06-14 02:26:01