x 時間が経過するまで Python コマンドを繰り返します。

x 時間が経過するまで Python コマンドを繰り返します。

次の問題があります。何らかの理由で、Pythonスクリプトは実行の初期段階で100回中99回クラッシュします。ところで、私がプログラムを自分で書いたことがないので、どのように修正するのかわかりません。それで、正常に完了するまで再起動スクリプトを繰り返すことができると思いました。

これを行う方法はありますか? x秒ごとにプログラムを自動的に再起動するさまざまな方法を見ましたが、プログラムがx分以上実行されていない場合にのみプログラムを再起動したいと思います。したがって、x分以上実行され、終了したら再起動せず(成功的に完了するため)、x分以内に衝突が発生したら再起動します(成功的に実行されないため)。

可能ですか?

私にとってxは約30分です。アルゴリズムがクラッシュするまでしばらく実行でき、正常に実行されると実行に2時間以上かかるためです。

答え1

それで、正常に完了するまで再起動スクリプトを繰り返すことができると思いました。

それは簡単です。次は、成功するまでコマンドを1秒に1回繰り返します。

until python myscript.py; do
  sleep 1
done

x秒ごとにプログラムを自動的に再起動するさまざまな方法を見ましたが、プログラムがx分以上実行されていない場合にのみプログラムを再起動したいと思います。

少しトリッキーですが、コマンドtimeout(コマンドの一部なcoreutilsので必ず必要です)を使用して古いスクリプトをラップできます。次は、最大5分まで1秒ごとにスクリプトを再試行します。

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

関連情報