nohup someprogram &> $LOG &
echo "what happen: $?"
而當我無法訪問$ LOG或某個程序退出的狀態不是0時,我希望能夠檢測到這一點。由nohup創建的進程狀態
目前,當存在許可錯誤時,$?返回0.是否有可能讓bash告訴我執行前面的語句有問題?
nohup someprogram &> $LOG &
echo "what happen: $?"
而當我無法訪問$ LOG或某個程序退出的狀態不是0時,我希望能夠檢測到這一點。由nohup創建的進程狀態
目前,當存在許可錯誤時,$?返回0.是否有可能讓bash告訴我執行前面的語句有問題?
嘗試等待以返回您的子進程的狀態。
nohup someprogram &> $LOG &
wait $!
echo $?
如果你背景的過程,你不能立即可靠地測試它是否失敗 - 因爲它可能仍然是運行之前,無論何時你檢查它失敗。要獲得可靠的解決方案,您必須登錄wait
。
但是,如果你不關心全reliablitiy,你只是想檢查是否你打電話躲過了第二的某些部分的PROGRAMM,你可以做
cpid=$!
sleep 0.1
jobs -l | grep $cpid | grep running && working=1
的片段可以提高,但它應該給你基本的想法。
請注意,一些睡眠實現只支持整數。 GNU的睡眠,你會發現在大多數Linux發行版上,也支持浮動。
這個過程沒有終止,所以等待似乎永遠等待,永遠不會迴應。有沒有可能繼續執行一些超時? – nurettin