Linux

重複 python 命令,直到 x 時間過去

  • January 6, 2020

我有以下問題,由於某些(已知)原因,我的 python 腳本在早期執行階段崩潰了 100 次中的 99 次。但由於該程序不是我編寫的,我不知道如何修復它。所以我想也許我可以反復重啟腳本,直到它成功完成。

有沒有辦法做到這一點?我見過多種方法可以每隔 x 秒自動重新啟動程序,但我只想在程序執行時間不超過 x 分鐘時重新啟動程序。因此,如果它執行超過 x 分鐘,如果它終止(因為它將成功完成),請不要重新啟動它,但如果它在 x 分鐘內崩潰,請重新啟動它(因為它沒有成功執行)。

這可能嗎?

對我來說,x 大約是 30 分鐘,因為算法可以執行一段時間,直到它崩潰,如果它成功執行,則需要超過 2 小時才能執行。

所以我想也許我可以反復重啟腳本,直到它成功完成。

這很簡單。以下將重複您的命令一次/秒,直到它成功:

until python myscript.py; do
 sleep 1
done

我見過多種方法可以每隔 x 秒自動重新啟動一個程序,但我只想在程序執行時間不超過 x 分鐘時重新啟動程序。

有點棘手,但您可以使用timeout命令( 的一部分coreutils,因此您應該擁有它)來包裝以前的腳本。以下將每秒重試您的腳本最多五分鐘:

timeout 5m sh -c 'until python myscript.py; do sleep 1; done'

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