クローン操作、ランダムに始まったが時間範囲内

クローン操作、ランダムに始まったが時間範囲内

スクリプトを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

おすすめ記事