N秒ごとにbashスクリプトを実行したいので、失敗してもwhile
クラッシュなしでループを続行したいと思います。
次のソリューションを使用していますN秒ごとにbashスクリプトを繰り返し実行する方法は?:
10時間の同時スクリプトが完了しました。
誰かが次のように言いました。This is the canonical way to repeat a command as long as it doesn't fail.
私のスクリプトが失敗した場合は、whileループが終了することを観察します。
try...catch
スクリプトにメカニズムを適用し、while
スクリプトが失敗してもループを続行する方法はありますか?
答え1
POSIXシェルで無限ループを作成する一般的な方法は、コマンドを条件としてwhile
使用することです。true
while true ; do
script
sleep 10
done
答え2
ループの条件と操作を変更してバックグラウンドで実行できwhile
ますscript
。
N=10
while sleep $N
do
script &
done
これにより、ループメカニズムはscript
成功や失敗を気にしません。
これはあなたの例よりも終了するのが簡単です。プロセスを識別して終了しますsleep
。これによりsleep
エラーコードが返され、while
ループが終了します。
また、要求された正確な間隔に近いスクリプトを実行できます。元の例はscript
毎秒10回実行され、N+X
実行N
にかかる時間も異なりますX
。script
この例は毎秒近づく必要がありますN
。
完了するまでに数秒script
以上かかるため、複数のインスタンスを同時に実行できる状況を予想して準備する必要があります。N