Wie würde ich einen Cron-Job bekommen, der alle 30 Minuten ausgeführt wird?

223

Ich möchte einen crontabEintrag hinzufügen , um alle 30 Minuten, zu jeder vollen Stunde und 30 Minuten nach der vollen Stunde oder so etwas in der Nähe ein Skript auszuführen. Ich habe folgendes, aber es scheint nicht auf 0 zu laufen.

*/30 * * * *

Welche Zeichenfolge muss ich verwenden?

Der Cron läuft unter OSX.

Darryl Hein
quelle
Ist es Ihnen gelungen, Ihre Crontab zum Laufen zu bringen? Ihr Problem ist möglicherweise nicht die Crontab, sondern die Verwendung.
Eddie
Es werden zwei weitere Skripte ausgeführt, eines pro Minute.
Darryl Hein
1
Ich warte darauf, ob eine der folgenden Antworten funktioniert. Ich muss nur warten, bis die nächsten 30 Minuten abgelaufen sind ... in 3 Minuten.
Darryl Hein
2
... Könnten Sie nicht einfach 0,30 in 0,5 ändern? Wenn 0,5 funktioniert, warum nicht 0,30?
George Stocker
1
Sie haben uns nie gesagt, ob es zu jeder vollen Stunde funktioniert!
Eddie

Antworten:

487

Machen:

0,30 * * * * your_command
vladr
quelle
1
Funktioniert super! In CentOS crontab musste ich so etwas wie " 0,30 * * * * root your_commandroot" als Benutzer verwenden.
Programmierer
@prograhammer - War diese Zeile Teil der Crontab einer Wurzel oder der Crontab eines anderen Benutzers?
Muhamed Huseinbašić
@ MuhamedHuseinbašić gute Frage, da es 2 verschiedene Crontabs gibt (die globale und dann die eines Benutzers). Ich muss
nachsehen
99

crontab versteht keine "Intervalle", sondern nur "Zeitplan"

Gültige Stunden: 0-23 - Gültige Minuten: 0-59

Beispiel 1

30 * * * * your_command

Dies bedeutet "laufen, wenn die Minute jeder Stunde 30 ist " (würde laufen um: 1:30, 2:30, 3:30 usw.)

Beispiel 2

*/30 * * * * your_command

Dies bedeutet "laufen, wenn die Minute jeder Stunde gleichmäßig durch 30 teilbar ist " (würde laufen um: 1:30, 2:00, 2:30, 3:00 usw.)

Beispiel # 3

0,30 * * * * your_command

Dies bedeutet "laufen, wenn die Minute jeder Stunde 0 oder 30 ist " (würde laufen um: 1:30, 2:00, 2:30, 3:00 usw.)

Dies ist eine weitere Möglichkeit, die gleichen Ergebnisse wie in Beispiel 2 zu erzielen

Beispiel 4

19 * * * * your_command

Dies bedeutet "laufen, wenn die Minute jeder Stunde 19 ist " (würde laufen um: 1:19, 2:19, 3:19 usw.)

Beispiel # 5

*/19 * * * * your_command

Dies bedeutet "laufen, wenn die Minute jeder Stunde gleichmäßig durch 19 teilbar ist " (würde laufen um: 1:19, 1:38, 1:57, 2:19, 2:38, 2:57 usw.)

Hinweis: Dieser Beitrag wurde von verschiedenen Benutzern, einschließlich des Autors, mehrfach verfeinert

aequalsb
quelle
76

Versuche dies:

0,30 * * * * your command goes here

Laut der offiziellen Manpage zu Mac OS X crontab (5) wird die /Syntax unterstützt. Um herauszufinden, warum es bei Ihnen nicht funktioniert hat, müssen Sie sich die Protokolle für cron ansehen. In diesen Protokollen sollten Sie eine eindeutige Fehlermeldung finden.

Hinweis: Mac OS X scheint Vixie Cron zu verwenden, genau wie Linux und die BSDs.

Eddie
quelle
Ich habe * / 30 immer mit Erfolg verwendet, aber ich erinnere mich nicht an eine meiner Anwendungen, bei der es zu kritisch war, wenn sie nur einmal pro Stunde ausgeführt wurde, sodass ich nicht glaube, dass ich sie jemals überprüft habe.
Adam Hawes
2
@Adam Hawes: Ich habe * / xx in der Vergangenheit auch mit Erfolg verwendet, aber unter Linux und anderen UNIXes. Ich habe Mac OSX nicht persönlich ausprobiert. Die ursprüngliche Frage sagte nicht, welches Betriebssystem. Einige ältere UNIXes unterstützen nicht * / xx
Eddie
Ihre Antwort hat auch funktioniert, aber Vlad hat weniger Wiederholungen, also habe ich ihm die Punkte gegeben.
Darryl Hein
1
@DarrylHein lol, heute hat Eddie weniger Wiederholungen :-p. Ich stimme Eddie zu.
Anfänger
10

Wenn Ihr Cron-Job nur unter Mac OS X ausgeführt wird, möchten Sie möglicherweise stattdessen launchd verwenden.

Aus der Planung zeitgesteuerter Jobs (offizielle Apple-Dokumente) :

Hinweis: Obwohl es weiterhin unterstützt wird, ist cron keine empfohlene Lösung. Es wurde zugunsten von launchd abgelehnt.

Sie können zusätzliche Informationen (wie die gestartete Wikipedia-Seite ) mit einer einfachen Websuche finden.

PCheese
quelle
5

Sie erwähnen, dass Sie OS X verwenden. Ich habe in der Vergangenheit Cronnix verwendet . Es ist nicht so geekig wie es selbst zu bearbeiten, aber es hat mir geholfen, im Handumdrehen zu lernen, was die Spalten sind. Nur ein Gedanke.

Allyn
quelle
Dies könnte auch sonst hilfreich sein.
Darryl Hein
3

Sie können beide Symbole ' , ' ODER Teilen ' / ' verwenden.
Aber ' / ' ist besser.
Angenommen, der Fall "alle 5 Minuten". Wenn Sie ' , ' verwenden, müssen Sie den Cron-Job wie folgt schreiben:

0,5,10,15,20,25,30,35,....    *      *     *   * your_command

Dies bedeutet, dass Sie Ihren Befehl jede Stunde in allen definierten Minuten ausführen müssen: 0,5,10, ...

Wenn Sie jedoch '/' verwenden, können Sie den folgenden einfachen und kurzen Job schreiben:

*/5  *  *  *  *  your_command

Es bedeutet, dass Sie Ihren Befehl in den Minuten ausführen, die durch 5 teilbar sind, oder in den einfacheren Worten '0,5,10, ...'.

Das teilbare Symbol '/' ist also immer die beste Wahl.

Mohsen Abasi
quelle