Heute ist der 1. November 2016 oder in (eindeutigen) Ziffern der 01.11.2016.
Ich habe einen Benutzer-Cron-Job wie folgt eingerichtet:
# m h dom mon dow command
33 3 1 */2 * /home/user/...
Es soll jeden zweiten Monat am Ersten des Monats um 03:33 Uhr ausgeführt werden, egal an welchem Wochentag es ist, aber aus irgendeinem Grund wurde es heute ausgeführt, obwohl 11 nicht durch 2 teilbar ist.
Kann mir das jemand erklären? Ist meine Annahme der Teilbarkeit durch 2 falsch?
BEARBEITEN: Ich habe vergessen zu erwähnen, dass ich die cron
Version "3.0pl1-127 + deb8u1" auf einem Debian 8.6 "Jessie" Rechner laufen lasse.
Antworten:
Das
/
ist kein arithmetischer Ausdruck, sondern beschreibt "Schrittwerte" über den zulässigen Wertebereich. Also, da Monate immer mit1
anstatt beginnen0
,/2
würde bedeuten "jeden anderen Wert nehmen", was zu (1, 3, 5, 7, 9, 11) führt.Dies wird auch in der Handbuchseite beschrieben, obwohl dies nicht sehr klar und leicht zu verstehen ist:
quelle
*/5
? Wäre es 1,6,11,1,6 ... oder wäre es 1,6,11,4,9 ...? Ich nahm an, dass "über dem zulässigen Wertebereich" bedeutet, dass es kein Gedächtnis hat, aber jetzt war ich mir da nicht so sicher.crond
Nimmt einfach die Liste der möglichen Werte, wendet den Schrittwähler einmal an und verwendet diese Ergebnisse dann wiederholt.Heute ist der erste Tag im November.
* / 2 bedeutet, dass Ihr Cronjob jeden zweiten Monat ausgeführt wird, wie Sie sagen.
Der Cronjob wird also im nächsten Monat (Dezember) nicht ausgeführt, sondern erst im darauf folgenden Monat (Januar).
Im Monat vor diesem Monat (Oktober) wurde der Cronjob nicht ausgeführt. Aber im September war es soweit.
quelle
*/2
das Feld für den Monat dem Feld für den Monat entspricht1-11/2
und nicht2-12/2
. Ich sage nicht, dass Sie sich irren, aber können Sie Belege vorlegen?