web-dev-qa-db-ja.com

2回の間に5分ごとにcronジョブを実行する

Crontabで、営業日の開始時刻と終了時刻の間に5分ごとに実行されるジョブを指定する方法はありますか?

更新私の開始時刻と終了時刻がラウンドアワーではないことに関連があると思います。したがって、時間列に9-5を指定するだけでは十分ではありません。 9:30-17:30が欲しいです。

18

あなたはそれを区分的に行う必要があります:

30-59/5 9 * * * script.sh
*/5 10-16 * * * script.sh
0-30/5 17 * * * script.sh

Ignacio Vazquez-Abrams's answer が実際には機能しない場合、たとえば、スクリプトに多数のパラメーターが必要であるか、呼び出し基準が重要でない(または時間制限がない)場合、別のアプローチは、単純なラッパースクリプトを作成し、定期的にラッパースクリプトを呼び出し、ラッパースクリプトに現在の時刻を確認させてメインスクリプトを呼び出すことです。

例えば:

#/bin/bash

# Check to see if we should run the script now.
HOUR=$(date +%H)
MINUTE=$(date +%M)
if test $HOUR -lt 9; then exit 0; fi
if test $HOUR -eq 9 -a $MINUTE -lt 30; then exit 0; fi
if test $HOUR -eq 17 -a $MINUTE -gt 30; then exit 0; fi
if test $HOUR -gt 17; then exit 0; fi

# All checks passed; we should run the script now.
exec script.sh ... long list of parameters ...

これにより、シェルと個別のスクリプトを定期的に呼び出すという比較的小さな費用で、cronの構文よりも複雑な実行基準を簡単にエンコードできます。

1
a CVn