cronでランダムに待機して実行する方法

PIRO4DによるPixabayからの画像

anacronと言うものもありますが、あくまでcronでランダムに待機して実行する方法についてです。

普通にcronに時間を設定しようとするとランダムには設定できません。そこでランダムの時間スリープで待機してからコマンドを実行すればできるのではと考えました。

コマンドイメージ

sleep $(($RANDOM % 50))m && ここに実行するコマンド記載

$RANDOMがランダムな整数を生成します。% 50 は、ランダムな整数を50で割ったあまりを表します。今回では、0~49となります。&&は、sleepコマンドが成功した際に、後続のコマンドを実行します。

この場合0から49までの任意の分をsleepで待機し、その後に希望のコマンドを実行します。mを変更すれば、秒や時間にも対応できます。

cronに登録の際は、%をエスケープする必要があるのでご注意ください。

cronに登録するイメージ

sleep $(($RANDOM \% 50))m && ここに実行するコマンド記載

以上となります。

Linux

Posted by deno