Wie geht cron mit Restbeständen bei „allzu oft“ Jobs um?

13

Wenn ich das mache:

*/9 * * * * /path/to/wotnot

Zu welchen Zeiten wird die Aufgabe in zwei Stunden ausgeführt, beginnend um 09:00 Uhr

Ist es ein:

09h00
09h09
09h18
09h27
09h36
09h45
09h54
10h03
10h12
10h21
10h30
10h39
10h48
10h57

oder B:

09h00
09h09
09h18
09h27
09h36
09h45
09h54
10h00
10h09
10h18
10h27
10h36
10h45
10h54
Jesse
quelle

Antworten:

31

Wenn Sie sich einen Bereich ansehen, interpretieren Sie ihn nur in dieser Spalte. '* / 9' in der Minutenspalte bedeutet "jede Minute auflisten, dann jeden neunten Wert auswählen". Diese Auswahl wird zu jeder vollen Stunde zurückgesetzt, sodass Sie stündlich um xx: 00, xx: 09, xx: 18 usw. neu starten.

Es kann auch als "alle neun Minuten jeder Stunde" gelesen werden, was bedeutet, dass das Zurücksetzen zu Beginn der Stunde erfolgt.

Das tatsächliche Verhalten entspricht also Option B.

John
quelle
Dies ist die einzige Antwort, die die Frage tatsächlich zu beantworten scheint. Haben Sie dies versucht, um sicherzugehen?
gparent
In den letzten 10 Minuten? Nein. In den letzten drei Monaten? Ja, allerdings nicht speziell im Abstand von neun Minuten.
John
Ich verstehe nicht, warum es mich interessieren würde, wenn du es tust, aber nur, wenn. Vielen Dank.
gparent
1
Ehemalige Kollegen waren verärgert über "Nein, Sie haben es nicht getestet, Sie verlassen sich auf Ihr fehlerhaftes Gedächtnis!" in ähnlichen Situationen (natürlich 5 Minuten später gehen sie genervt weg, nachdem ich bewiesen habe, dass es immer noch funktioniert), habe ich mir angewöhnt, mich davor abzusichern.
John
2
Der erste Schritt beim Testen besteht darin, sicherzustellen, dass Sie dieselbe Marke und Version wie der Kunde haben (in diesem Fall Jesse). Ich sehe bis jetzt keine Ahnung, welchen Cron er benutzt. (Es ist wahrscheinlich Vixie Cron, und diese grundlegende Funktion ist wahrscheinlich in allen Versionen dieses Programms stabil.)
Kaz
22

Um die Antwort von John zu bestätigen, */nbedeutet in der Minutenspalte "wenn die Minute 0 mod n ist". Hier ist ein crontabEintrag:

*/7 * * * *  date >> /tmp/foo

und hier ist die Ausgabe:

Thu Jan 10 14:49:01 GMT 2013
Thu Jan 10 14:56:01 GMT 2013
Thu Jan 10 15:07:01 GMT 2013

Beachten Sie, dass die Lücke zwischen den letzten beiden Malen nicht sieben Minuten beträgt , da nach nn: 56 das nächste Mal */7`nn + 1: 07 ist.

Ja, ich bin mir bewusst, dass diese Zeiten in der Zukunft liegen (oder sie waren, als ich dies gepostet habe). Ich musste die Systemuhr ziemlich schnell vorwärts bewegen, um eine schnelle Antwort zu erhalten.

MadHatter
quelle
5
+1 für die Mühe :)
Sven