-1
我有腳本,我假設有時會掛起。bash中的腳本在進程上等待,然後放棄
我的目標是等到腳本完成或殺死它,如果它在30秒後沒有出現,並返回一些代碼。
(function) & pid=$!
wait $pid || sleep 30 || kill -9 $pid
finished=$?
所以我想到了上面。我不想浪費額外的第二次睡覺,如果過程完成,爲什麼我使用等待。
這是正確的還是更好的方法?
我有腳本,我假設有時會掛起。bash中的腳本在進程上等待,然後放棄
我的目標是等到腳本完成或殺死它,如果它在30秒後沒有出現,並返回一些代碼。
(function) & pid=$!
wait $pid || sleep 30 || kill -9 $pid
finished=$?
所以我想到了上面。我不想浪費額外的第二次睡覺,如果過程完成,爲什麼我使用等待。
這是正確的還是更好的方法?
有一個更好的方法:使用timeout
命令。
有關更多詳細信息,請參見Timeout a command in bash without unnecessary delay。
這已被多次回答 - 以下是如何在bash中執行超時:http://www.bashcookbook.com/bashinfo/source/bash-4.0/examples/scripts/timeout3 –