Ich habe noch nie eine Cron-Implementierung gesehen, mit der ein Job zu einem zufälligen Zeitpunkt ausgeführt werden kann. Es ist eine seltsame Anforderung. Wie in der Dokumentation angegeben, 9-12
ist dies eine Abkürzung für 9,10,11,12
und bedeutet jede Stunde von 9 bis 12.
Wenn Sie einen Job zu einer zufälligen Zeit ausführen möchten, führen Sie den Job zu Beginn des Intervalls aus und fügen Sie eine zufällige Verzögerung hinzu. Zum Beispiel, um zu einer zufälligen Stunde zwischen 9 und 12 zu laufen:
SHELL=/bin/bash
0 9 * * * sleep $((3600 * (RANDOM % 4))); do_stuff
Beachten Sie, RANDOM
dass bash oder ksh erforderlich ist und möglicherweise nicht in der Standard-Shell verfügbar ist.
Wenn Sie zu einer zufälligen Zeit zwischen 9 und 12 mit einer zweiten Auflösung ausgeführt werden möchten, können Sie diese RANDOM % 10800
als Verzögerung verwenden. Da sie RANDOM
jedoch im Bereich von 0 bis 32676 liegt, besteht eine Tendenz zu Verzögerungen zwischen 0 und 32768% 10800 = 368. Um diese Tendenz zu vermeiden:
SHELL=/bin/bash
0 9 * * * max=$((32768/10800*10800)); while delay=$RANDOM; ((delay > max)); do :; done; sleep $((delay % 10800)); do_stuff
--randomwait
Argument zu Yum oder--splay
Argument zu Chef-Client). Für diejenigen, die dies nicht tun, wäre eine zufällige Ausführungszeit eine hilfreiche Funktion in einem Job Scheduler.