いくつかのタスクを時間単位で実行したいのですが、必ずしも同時に行う必要はないようです。
0 * * * * job
毎時間0分に定時に実行されるという意味です。
私も使用できることを知っています
@hourly job
ある場合、どのような違いがありますか?ジョブは毎時間実行されますが、同時に実行されないようにスケジュールするにはどうすればよいですか?
答え1
~からcrontab(5)
:
@hourly
:毎時間実行されます。"0 * * * *"
。
だからそれは同じです。
1時間の複数の時点でジョブ(または負荷を分散するための複数のジョブ)を実行するには、ジョブを開始する前に任意の時間にわたって眠ります。
@hourly sleep $((RANDOM / 10)); dowhatever
最大3276秒(ほぼ1時間)待機してからジョブを実行します。したがって、タスクを開始するたびにcron
実際に開始する前に待つ時間が異なります。
答え2
@hourly
0 * * * *
in の同義語であり、crontab
違いはありません。@hourly
の特殊文字列表現です0 * * * *
。
からman 5 crontab
:
string meaning
------ -------
@hourly Run once an hour, "0 * * * *".
cron
私のVixie Cronは合計8つの特殊文字列をサポートしていることに注意してください。
答え3
Jenkins Cron/定期的なビルドアプローチを共有したいと思いました。 H(ハッシュ)がオプションの一般Cronでこのようなものを見ると良いでしょう。
Examples:
# every fifteen minutes (perhaps at :07, :22, :37, :52)
H/15 * * * *
# every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24)
H(0-29)/10 * * * *
# once every two hours at 45 minutes past the hour starting at 9:45 AM and finishing at 3:45 PM every weekday.
45 9-16/2 * * 1-5
# once in every two hours slot between 9 AM and 5 PM every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM)
H H(9-16)/2 * * 1-5
# once a day on the 1st and 15th of every month except December
H H 1,15 1-11 *
答え4
以下を使用して時間境界を明示的に制限することもできます。モジュロ演算子。
開始時間を最大10分(600秒)に制限するには、次のようにします。
$RANDOM % 600
0 ~ 600 の結果を生成します。@hourly sleep $(( $RANDOM % 600 )) && /path/to/your/script
とにかく実行されるので、
&&
ここで使用されます。sleep