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


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.


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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.