1時間ごとに実行されるcronジョブがあり、実行に時間がかかりすぎることがあります。最大ランタイムを設定して、それを超えるとジョブが強制終了される方法はありますか?
これはUbuntu 10.04サーバー上にあります。
ありがとう、jebw
timeout
コマンドを試してください。例えば:
0 * * * * timeout -2 3540 /path/to/your_command.sh
59分以内に完了しなかった場合、SIGINTがコマンドに送信されます。
いいえ。これを行う方法は、ロックファイルを使用してスクリプトを作成し、スクリプトでそのロックファイルをチェックしてから実行を再開することです。これにより、スクリプトがすでに実行されているかどうかを確認し、実行されているかどうかを判断できます。終了するか、実行する前にもう一方を強制終了する場合。
ロックファイルは、空のファイル、または他のスクリプトPID
が/var/run
や/var/lock
などのどこかに保存されているファイルです。
ケーキモックスの答えは最高です。それ以外の場合は、pidをファイルに入れるか、1分前に外部のcronjobでkillallを使用してプロセスを強制終了します。