1日2〜3回、24時間、毎回異なる時間にスクリプトを実行できるようにしたいです。
何をお勧めしますかシンプルで信頼できる解決策?
答え1
1日2回スクリプトを実行します。
0 0,12 * * * sleep $(( $$ \% 21600 )); /path/to/script.sh
これにより、正午と真夜中の作業が開始され、次にスクリプトを開始する前に最大6時間(12時間間隔の半分)の間スリープモードに切り替わります。
1日3回スクリプトを実行します。
0 0,8,16 * * * sleep $(( $$ \% 14400 )); /path/to/script.sh
これにより、深夜、午前8時、午後4時に作業が開始され、スクリプトを開始する前に最大4時間(8時間間隔の半分)待機します。
Ubuntuでタグ付けしたので、デフォルト/ bin / shでbashがあるかもしれません。これは$ RANDOMを説明しているようです(RANDOMはPOSIXが指定されていませんが)。したがって、予測不可能性を高めるために、Zwansの答えを次のように置き換えてください。
1日2回実行:
0 0,12 * * * sleep $(( RANDOM \% 21600 )); /path/to/script.sh
1日3回実行:
0 0,8,16 * * * sleep $(( RANDOM \% 14400 )); /path/to/script.sh
私はこれをに変更します&&
。;
これは、「睡眠コマンドが正常に終了するのを待ちます」から「スケジュールされた時間の間、睡眠が完了したか終了するかにかかわらず、睡眠」に意味を変更します。また参考にしてください%
脱出する必要がありますcron コマンドの一部である場合、そうでない場合は改行文字として解釈されます。
答え2
0 */12 * * * sleep $((RANDOM%x)) && /bin/sh -c /path/to/script.sh
遅延時間は 0 からの間なので、x
その値を直接設定してください。これは、ランダムな遅延を含む12時間ごとに実行する必要があります。
を使用して実行されていることを確認してくださいbash
。