Wie führe ich alle 3 Monate einen Cron Job durch?

33

Wie würde der Crontab-Eintrag für einen Job aussehen, der am ersten Tag jedes dritten Monats ausgeführt wird?

haim evgi
quelle
2
Was hat das mit Apache 2 zu tun?
Jawa

Antworten:

68

Das folgende Skript wird am 1. Januar, April, Juli und Oktober um 03:30 Uhr ausgeführt

30 03 01 Jan,Apr,Jul,Oct * /path/to/script

Alternativ, aber weniger offensichtlich

30 03 01 */3 * /path/to/script

Läuft alle drei Monate um 03:30 Uhr am 1. Januar, April, Juli und Oktober.

Richard Holloway
quelle
4
+1: Ich habe immer gedacht, dass die / -Notation die offensichtlichste ist ... Ich verwende sie, wo immer es möglich ist. (Worte im Scheduling-Teil der Crontab machen mich fertig ... Ich würde tun: "0 0 1 3,6,9,12 * /path/to/script.bash", wenn ich es nicht könnte / 3)
Satanicpuppy
11
würde nicht */3alle vier Monate sein (12/3 = 4)?
Warren
8
@Warren Nein, würde es nicht. Die Logik hier ist eher eine modifizierte Wahrheitserklärung. Beispiel: if (12% 3 == 0): run_script (). Ich habe auch darüber nachgedacht! Gute Frage.
Goahnary
1
@ Goahnary Ich erkannte, dass eine Weile, nachdem ich um die Klarstellung gebeten, auch :)
warren
3
@warren es sollte wirklich ein Mod Operator sein und keine Division. Aber na ja ¯_ (ツ) _ / ¯
Goahnary
7

Wikipedia hat eine nette Erklärung, wie man Cron konfiguriert.

Für Ihren speziellen Fall können Sie einen Cron-Ausdruck ausführen, der alle 3 Monate ausgeführt wird. Ändern Sie die Monate natürlich entsprechend Ihrem Zeitplan.

0 0 1 JAN,APR,JUL,OCT  * /path/to/script.bash
Jon Rhoades
quelle
2
-1 Obwohl dies als richtige Antwort markiert wurde, tritt ein Fehler auf, da die Felder in der falschen Reihenfolge sind und selbst wenn sie in der richtigen Reihenfolge wären, jeden Tag von Mitternacht bis Januar, April, Juli, Oktober (z. B. 01/01 02) ausgeführt werden / 01 ... 31/01 01/04 ..) und nicht nur einmal alle drei Monate. Meine Antwort würde funktionieren, wurde aber nicht angenommen. Traurig mich!
Richard Holloway
@Richard Holloway - die Geheimnisse der Serverfehler - haben meine Antwort aktualisiert, danke für den Hinweis auf den Tippfehler
Jon Rhoades
1
Ich habe mein -1 entfernt, um die Änderung widerzuspiegeln.
Richard Holloway
Sie sollten auch die Leerzeichen nach den Kommas nicht haben, viele Cron-Implementierungen sehen sie als Trennzeichen. Möglicherweise stoßen Sie auf Implementierungen, die auch numerische Monate erfordern, obwohl ich denke, dass dies heutzutage selten ist.
David Spillett
@ David Spillett, danke, wir werden es am Ende schaffen ... Möglicherweise hat mein Crapest jemals geantwortet. Wenn ich Anstand hätte, würde ich es löschen;)
Jon Rhoades