crontabで、営業日の開始時刻と終了時刻の間で5分ごとに実行されるジョブを指定する方法はありますか?
更新 開始時刻と終了時刻がラウンドアワーでないことが重要だと思います。したがって、時間列に9〜5を指定するだけでは十分ではありません。9:30-17:30が欲しいです。
crontabで、営業日の開始時刻と終了時刻の間で5分ごとに実行されるジョブを指定する方法はありますか?
更新 開始時刻と終了時刻がラウンドアワーでないことが重要だと思います。したがって、時間列に9〜5を指定するだけでは十分ではありません。9:30-17:30が欲しいです。
回答:
分割して行う必要があります。
30-59/5 9 * * * script.sh
*/5 10-16 * * * script.sh
0-30/5 17 * * * script.sh
場合イグナシオバスケス-エイブラムスの答えは、スクリプトが多数のパラメータを必要とするか、呼び出しの基準は非自明であるため、実際には、たとえば、あなたのために動作しない(またはしない時間が結合した)、その後、別のアプローチは、シンプルにすることですラッパースクリプトは、定期的にラッパースクリプトを呼び出し、ラッパースクリプトに現在の時刻を確認させ、メインスクリプトを呼び出します。
例えば:
#/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と別のスクリプトを定期的に呼び出す比較的少ない費用で、cronの構文が容易に許可するよりも複雑な実行基準をエンコードできます。