スクリプトを1日1回、0900から1200の間で起動して実行したいと思います。
ダッシュ構文についてはよくわかりません。これはスクリプトが時間ごとに実行されることを意味しますか9-12
、それともランダムに起動されますか9-12
?なぜなら私には後者が必要だからです。
ベストアンサー1
私はランダムにタスクを実行する方法があるcronの実装を見たことがありません。これは奇妙な要求です。文書に示されているように、これは9時から12時までの時間を表す9-12
略語です。9,10,11,12
ランダムな時間にジョブを実行するには、間隔の開始時にジョブを実行し、ランダムな遅延を追加します。たとえば、9時から12時までのランダムな時間に実行するには、次のようにします。
SHELL=/bin/bash
0 9 * * * sleep $((3600 * (RANDOM \% 4))); do_stuff
bashまたはkshがRANDOM
必要で、デフォルトのシェルでは使用できない可能性があります。
9:00~12:00の間にランダムな時間で実行し、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