2016-06-27 43 views
0

寫了一個可執行任務的python腳本,該腳本可能會運行幾個小時。由於它與遠程服務器通信,如果發生連接錯誤,腳本可能會失敗。我想要做的是保持重新啓動它,如果它的退出代碼不是0。bash可能嗎?bash - 如何保持啓動程序,直到它退出0

一些僞-C,如果我的措辭是不明確的:

int exitcode; 
do 
{ 
    exitcode = MyPythonScript(); 
} while (exitcode != 0); 
+0

而不是從bash重新啓動程序,你應該捕獲python程序中的連接錯誤,並在這種情況下重新連接。 – hek2mgl

+0

@ hek2mgl,我絕對同意這將是一個更好的解決方案。然而,網絡資源的代碼不是我的,我只是從一個lib調用一個函數。這讓我不確定我是否可以在不修改lib本身的情況下對連接錯誤進行任何操作。 –

回答

2
until MyPythonScript 
do 
    : Nothing 
done 

離開時,與一個真正的(成功)狀態的命令退出。您可以在循環體中放置睡眠,錯誤報告或任何其他您想要的內容,以代替「不做但總是成功」命令:。當然,您可以根據需要爲腳本添加參數(以及I/O重定向等)。

+0

超級優雅的解決方案! – hek2mgl

+2

而不是':Nothing'(這實際上只是一個放棄了參數的':'),你也可以睡覺(比如睡10秒睡10秒),這通常是避免網絡垃圾郵件的好主意並浪費了處理器週期。 – Taywee

+0

太棒了,謝謝! –

相關問題