Linux
重複 python 命令,直到 x 時間過去
我有以下問題,由於某些(已知)原因,我的 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'