ループで実行されるスクリプトがあります。 ./run_my_script を使用してコマンドラインからスクリプトを手動で簡単に起動できますが、時にはスクリプトが停止して再起動する必要がある場合があります。だからCtrl-Cを押して再起動しました。それでは、定期的にスクリプトを停止して再起動するcronを作成したいと思います。だから私のcronに次のように入力します。
00 * * * * pkill -f ./run_my_script && /bin/sleep 15 && ./run_my_script
これはうまくいきません。スクリプトは終了しますが再起動しないため、次のことを試してください。
00 * * * * pkill -f ./run_my_script
00 * * * * /bin/sleep 15 && ./run_my_script
これも機能しません。スクリプトを終了しますが、再起動しません。だから私は次のことを試みます:
00 * * * * pkill -f ./run_my_script
01 * * * * /bin/sleep 15 && ./run_my_script
そしてそれは素晴らしい作品です。問題は、シャットダウンと再起動の間に1分ではなく数秒しか必要ないということです。どうすればいいですか?
答え1
pkill
「1つ以上のプロセスが基準を満たしている」場合にのみ状態0で終了する。つまり、まだ./run_my_script
実行されていない場合&&
pkill -f ./run_my_script && /bin/sleep 15 && ./run_my_script
残りの部分が機能しなくなります。
andの代わりにセミコロンを使用すると機能します。
pkill -f ./run_my_script ; /bin/sleep 15 && ./run_my_script
答え2
だからこれを試してみましたが、うまくいきました。
00 * * * * /bin/sleep 45 && pkill -f ./run_my_script
01 * * * * ./run_my_script