web-dev-qa-db-ja.com

cronジョブの実行時間を制限できますか

1時間ごとに実行されるcronジョブがあり、実行に時間がかかりすぎることがあります。最大ランタイムを設定して、それを超えるとジョブが強制終了される方法はありますか?

これはUbuntu 10.04サーバー上にあります。

ありがとう、jebw

8
jebw

timeoutコマンドを試してください。例えば:

0 * * * * timeout -2 3540 /path/to/your_command.sh

59分以内に完了しなかった場合、SIGINTがコマンドに送信されます。

11
Cakemox

いいえ。これを行う方法は、ロックファイルを使用してスクリプトを作成し、スクリプトでそのロックファイルをチェックしてから実行を再開することです。これにより、スクリプトがすでに実行されているかどうかを確認し、実行されているかどうかを判断できます。終了するか、実行する前にもう一方を強制終了する場合。

ロックファイルは、空のファイル、または他のスクリプトPID/var/run/var/lockなどのどこかに保存されているファイルです。

0
coredump

ケーキモックスの答えは最高です。それ以外の場合は、pidをファイルに入れるか、1分前に外部のcronjobでkillallを使用してプロセスを強制終了します。

0
Sirex