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


8

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

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

ありがとう、jebw

回答:


11

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

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

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


良い情報。「-s」を逃しましたが、「timeout -s 2 3540 <command>」です。
魚モニター

ubuntuのaptを介してインストールされたものは、私が述べた構文を使用します:usage: timeout [-signal] time command...
Cakemox

「dpkg -S bin / timeout」は何を提供しますか?実際、私のものはcoreutilsからのものであり、純粋なGNUishです。
フィッシュモニター

timeout: /usr/bin/timeout
Cakemox 2011

10.04、OPと同じ。
Cakemox

0

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

ロックファイルは、空のファイルか、またはのPIDような場所に他のスクリプトが保存されたファイルです。/var/run/var/lock


0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.