Ce que signifie une expression cron
Une expression cron standard compte cinq champs séparés par des espaces : minute, heure, jour du mois, mois et jour de la semaine. Un astérisque veut dire toutes les valeurs, une virgule sépare une liste (1,15), un tiret marque une plage (9-17) et une barre oblique fixe un pas (*/15 signifie toutes les 15 minutes). Ainsi, 30 2 * * 1-5 s'exécute à 2 h 30 du matin, du lundi au vendredi.
Collez n'importe quelle expression : l'outil la décrit en une phrase, détaille chaque champ et calcule les dix prochaines exécutions. Les raccourcis comme @daily et @hourly sont aussi compris. En cas d'erreur, le message indique le champ et la position au lieu d'une vague erreur de syntaxe.
Les pièges qui surprennent même les habitués
Quand le jour du mois et le jour de la semaine sont tous les deux définis, le cron classique s'exécute les jours qui correspondent à l'un ou à l'autre, pas aux deux : 0 0 13 * 5 s'exécute tous les 13 du mois et tous les vendredis. Si l'un des deux champs commence par un astérisque, comme dans */2, les deux doivent correspondre. L'explication le signale chaque fois que c'est le cas.
Cron utilise le fuseau horaire de la machine sur laquelle il tourne. Une tâche prévue à 2 h 30 ne s'exécute pas la nuit où l'on avance l'heure dans de nombreux pays, et une tâche à 1 h 30 peut rencontrer deux fois la même heure quand on recule l'heure. Choisissez le fuseau de votre serveur dans la liste des exécutions pour voir exactement quels jours sont concernés. Les mois qui n'ont pas de 31 sont tout simplement sautés.
Standard, avec secondes et Quartz
La crontab de Linux, les CronJobs Kubernetes et GitHub Actions utilisent la forme à cinq champs. Certaines bibliothèques ajoutent un champ des secondes au début. Quartz, utilisé par de nombreux planificateurs Java, a les secondes, une année facultative, numérote les jours de la semaine de 1 à 7 en commençant par le dimanche et exige ? dans l'un des champs de jour. Il ajoute aussi L pour le dernier jour, W pour le jour ouvré le plus proche et # pour le nième jour de la semaine du mois. Choisissez la syntaxe en haut ; en changeant de syntaxe, l'expression est convertie quand c'est possible.