Linux

超時函式返回值

  • January 23, 2020

我在 debian 上使用超時功能來等待我的腳本 5 秒。效果很好,但我遇到的問題是我需要一個返回值。比如 1 表示超時,0 表示沒有超時 我該怎麼做?

看看我的程式碼:

timeout 5 /some/local/script/connect_script -x 'status' > output.txt
# here i need the return of timeout

如您所見,我的 connect_script -x ‘status’ 將狀態作為字元串返回並將其列印到螢幕上(可能您看不到這個) 這個問題的背景是,如果伺服器(用於 connect_script)被凍結,則腳本什麼也不做. 這就是為什麼我需要超時。當它超時時,我想重新啟動伺服器。我可以這樣做,但我不知道如何查看它是否超時……

如果timeout超時,則以狀態 124退出;您可以檢查此項以確定腳本是否超時。

根據手冊man timeout):

概要超時

$$ OPTION $$數字$$ SUFFIX $$命令$$ ARG $$… $$ … $$如果命令超時,則以狀態 124 退出。否則,以 COMMAND 狀態退出

將此與退出狀態或返回值儲存在變數中的知識相結合$?,我們有…

timeout 5 /some/local/script/connect_script -x 'status' > output.txt
RETVAL=$?

然後,您可以根據 的值進行更多處理$RETVAL,如果超時將是 124,或者根據 的退出狀態進行一些其他值connect_script

引用自:https://unix.stackexchange.com/questions/205076