我有一個在 fedora 22 上運行的腳本,我正在其中重新啟動服務網絡,作為故障排除呼叫的一部分service network restart
。我想檢查該命令是否執行時間太長。如果花費太長時間,我想輸出一條訊息「重新啟動網路服務時出錯」。否則我想繼續劇本。
答案1
您可以使用timeout
command 在給定的逾時時間內執行命令或腳本。與此類似的東西:
timeout 10m command
它會等待命令在 10 分鐘內完成,否則會終止該命令並以狀態 124 退出timeout
。請參閱此處以了解更多資訊:超時線上說明頁。
如果您不想終止長命令,請執行以下操作:
(( sleep $TIMEOUT; echo "command took so long!" ) & exec $COMMAND )
超時時,這將列印訊息,但命令繼續執行。
答案2
如果您不關心編輯原始系統腳本,則可以在腳本內建立一個類似的函數
timeoutf(){
#If hangs 1 minute, dies..
sleep 1m
kill $PPID
}
timeoutf&