Cron */6 Stunden, aber mit einem Offset?

Cron */6 Stunden, aber mit einem Offset?

Ich habe eine Reihe von Geräten, auf denen alle einen ähnlichen Cron-Job ausführen. Derzeit stelle ich die Cron-Minuten und -Stunden auf eine Zufallszahl ein (so werden sie nicht alle gleichzeitig ausgeführt).

$random_minute $random_hour * * * sudo /bin/script

Ich möchte dieses Muster beibehalten, bei dem jedes Gerät zufällig ausgewählt wird, aber ich habe auch ein Skript, das alle 6 Stunden ausgeführt werden muss. Wie kann ich etwas wie oben mit kombinieren */6?

Antwort1

Der Tag hat nicht so viele Stunden, also warum nicht einfach

17 3,9,15,21 * * * sudo /bin/script

um 03:17 Uhr und von da an alle 6 Stunden laufen?

Die Alternativen würden das Hinzufügen einer Sleep-Funktion zum Programm selbst beinhalten:

0 */6 * * * (sleep 11820; sudo /bin/script)

oder führen Sie das Skript häufiger aus (z. B. stündlich) und lassen Sie es nur beenden, wenn der eigentliche Job innerhalb der letzten < 6 Stunden ausgeführt wurde.

Antwort2

Bei einigen cronImplementierungen können Sie Folgendes verwenden:

17 3-23/6 * * * * some command

verwandte Informationen