Le 31 du mois
0 2 31 * * ne tourne pas en février, avril, juin, septembre ni novembre : ces mois n'ont pas de 31. Cinq mois sans exécution par an, et rien ne le signale.
Cinq nombres séparés par des espaces, une syntaxe de 1975, et quelques pièges qui coûtent cher. Voici tout ce qu'il faut savoir — et un endroit pour vérifier.
Si tu remplis les deux champs, cron ne fait pas l'intersection. Il déclenche dès que l'un des deux correspond. C'est contraire à l'intuition, ce n'est écrit nulle part clairement, et ça produit des tâches qui tournent bien plus souvent que prévu.
0 2 20 * 1* dans l'autre.0 2 31 * * ne tourne pas en février, avril, juin, septembre ni novembre : ces mois n'ont pas de 31. Cinq mois sans exécution par an, et rien ne le signale.
Au printemps, 02:00 n'existe pas : la tâche est sautée. À l'automne, 02:00 existe deux fois. Programme à 04:00, ou travaille en UTC.
0 2 29 2 * ne tourne qu'une année sur quatre. C'est rarement ce qu'on voulait.
Les deux. 0 et 7 désignent dimanche, et la semaine commence le dimanche — pas le lundi comme en France.
Une expression cron ne prévient jamais quand elle ne se déclenche pas. Une tâche qui ne part pas ne produit aucune erreur, aucun journal, aucune alerte — juste un travail qui n'a pas eu lieu. C'est exactement pour ça que LeTock existe.