Moin!
Ich bin gerade dabei ein kleines PHP-skript zu schreiben, das aus einer (einfachen) Cron-Zeitangabe wie '59 23 31 12 *' ausrechnen soll, wann ein Skript das naechste mal laufen muss.
Ich weiss aber nicht, was passiert, wenn als Monatstag die 31 angegeben wird, der Monat aber gar keine 31 Tage hat. In der man page scheint dazu nichts zu stehen.
Kann man am 31. November ein Skript starten? Nein, weil es den Tag nicht gibt. Kann man wollen, dass am 31. November ein Skript starten könnte? Nein, weil es den Tag nicht im Kalender gibt.
Der Admin der Crontab hat also sein Hirn einzuschalten und dafür zu sorgen, dass seine monatlichen Jobs gefälligst nur im Bereich 1. bis 28. laufen, wenn er das garantiert monatlich haben will. Oder er nutzt die diversen Alternativen für monatliche Ausführung, z.B. /cron.monthly/. Oder legt explizit für jeden Monat die Ausführung expliziter fest (was beim Februar die Schaltjahre unberücksichtigt lassen muss).
Gibt es irgendwo eine halbwegs offizielle Dokumentation, wo das Verhalten in diesem Fall erlaeutert wird?
Das kann man sich aus den diversen Fragen ableiten, die man bekommt, wenn man mal nach dem Problem "Cronjob am letzten Tag des Monats starten" googelt. Resultat: Das ist ein komplizierteres Problem, welches in der Regel dadurch gelöst wird, dass der Job an jedem der POTENTIELL letzten Tage (oder sowieso täglich) gestartet wird und dann selbst feststellt, ob der Monatsletzte ist.
- Sven