@hourly vs 0 * * * * - Cron - 時間ごとに異なる時間にタスクを実行する方法

@hourly vs 0 * * * * - Cron - 時間ごとに異なる時間にタスクを実行する方法

いくつかのタスクを時間単位で実行したいのですが、必ずしも同時に行う必要はないようです。

0 * * * * job 

毎時間0分に定時に実行されるという意味です。

私も使用できることを知っています

@hourly job

ある場合、どのような違いがありますか?ジョブは毎時間実行されますが、同時に実行されないようにスケジュールするにはどうすればよいですか?

答え1

~からcrontab(5):

@hourly:毎時間実行されます。"0 * * * *"

だからそれは同じです。

1時間の複数の時点でジョブ(または負荷を分散するための複数のジョブ)を実行するには、ジョブを開始する前に任意の時間にわたって眠ります。

@hourly sleep $((RANDOM / 10)); dowhatever

最大3276秒(ほぼ1時間)待機してからジョブを実行します。したがって、タスクを開始するたびにcron実際に開始する前に待つ時間が異なります。

答え2

@hourly0 * * * *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 % 6000 ~ 600 の結果を生成します。

@hourly sleep $(( $RANDOM % 600 )) && /path/to/your/script

とにかく実行されるので、&&ここで使用されます。sleep

関連情報