回答:
ランダムな時間にジョブを実行する方法を持つcron実装を見たことがありません。奇妙な要件です。ドキュメントに記載されているように9-12
、はのショートカットであり9,10,11,12
、1時間ごとに9〜12を意味します。
ランダムな時間にジョブを実行する場合は、間隔の開始時にジョブを実行し、ランダムな遅延を追加します。たとえば、9〜12のランダムな時間に実行するには、次のように入力します。
SHELL=/bin/bash
0 9 * * * sleep $((3600 * (RANDOM % 4))); do_stuff
RANDOM
bashまたはksh が必要なことに注意してください。デフォルトのシェルでは使用できない場合があります。
9から12の間のランダムな時間で実行し、2番目の解像度で実行したい場合はRANDOM % 10800
、遅延として使用できますが、RANDOM
は0..32767の範囲であるため、0から32768%10800の間の遅延に偏ります。 368.このバイアスを回避するには:
SHELL=/bin/bash
0 9 * * * max=$((32768/10800*10800)); while delay=$RANDOM; ((delay > max)); do :; done; sleep $((delay % 10800)); do_stuff
--randomwait
yumへの引数や--splay
chef-clientへの引数など)、そうでないアプリケーションでは、ランダムな実行時間がジョブスケジューラに役立つ機能です。