Comment lire une expression cron, champ par champ
Une expression cron est une courte ligne de texte qui indique à un planificateur quand lancer une tâche. La forme habituelle comporte cinq champs séparés par des espaces : minute, heure, jour du mois, mois et jour de la semaine. La ligne 0 9 * * 1-5 correspond à 09:00 du lundi au vendredi. Chaque champ est un nombre, un nom, une liste, une plage ou un pas, ou * pour toutes les valeurs. Une tâche s'exécute à chaque instant où tous les champs correspondent.
Les cinq champs
| Champ | Valeurs autorisées | Exemple |
|---|---|---|
| Minute | 0 à 59 | 30 correspond à la minute 30 de l'heure |
| Heure | 0 à 23 | 9 correspond à 09:00, sur une horloge à 24 heures |
| Jour du mois | 1 à 31 | 15 désigne le 15 |
| Mois | 1 à 12, ou JAN à DEC | 3 ou MAR correspond à mars |
| Jour de la semaine | 0 à 6, ou SUN à SAT | 0 ou SUN correspond au dimanche, 1 au lundi |
Certains systèmes acceptent aussi 7 pour le dimanche, mais pas tous, donc utilisez 0 ou SUN. Cron n'a pas de champ secondes dans cette forme, donc le plus petit pas est d'une minute.
Listes, plages, pas et noms
désigne toutes les valeurs du champ.* * * *s'exécute chaque minute.- Une liste utilise des virgules.
0 9,17 * * *s'exécute à 09:00 et à 17:00 tous les jours. - Une plage utilise un trait d'union.
1-5dans le champ du jour de la semaine désigne du lundi au vendredi. - Un pas utilise une barre oblique.
*/15dans le champ des minutes désigne 0, 15, 30 et 45.10-30/5désigne 10, 15, 20, 25 et 30. - Les noms comme
MON-FRIpeuvent remplacer les nombres. Ils sont plus faciles à lire, si votre planificateur les accepte.
Ces éléments se combinent. 0 8-18/2 * * * s'exécute à la minute 0 de chaque deuxième heure, de 08:00 à 18:00.
Planifications courantes
| Expression | Signification |
|---|---|
* * * * * | Chaque minute |
/15 * * * | Toutes les 15 minutes |
0 * * * * | À la minute 0 de chaque heure |
0 2 * * * | Tous les jours à 02:00 |
0 9 * * 1-5 | 09:00, du lundi au vendredi |
0 9,17 * * * | 09:00 et 17:00 tous les jours |
30 6 1 * * | 06:30 le 1er de chaque mois |
0 0 * * 0 | Minuit tous les dimanches |
0 0 1 1 * | Minuit le 1er janvier |
/5 9-17 * 1-5 | Toutes les 5 minutes de 09:00 à 17:55, du lundi au vendredi |
Notez que 0 0 * * correspond à minuit, et 0 12 * * à midi. Se tromper d'heure est l'une des erreurs les plus fréquentes.
Jour du mois et jour de la semaine
Lorsque le champ du jour du mois et le champ du jour de la semaine sont tous deux restreints, la tâche s'exécute lorsque l'un ou l'autre correspond. C'est la règle classique de Vixie cron et de nombreux systèmes qui en dérivent. Ainsi, 0 0 13 * 5 s'exécute à minuit le 13 de chaque mois, et aussi chaque vendredi. On s'attend souvent à ce que cela ne concerne que le vendredi 13, et on obtient davantage d'exécutions que prévu.
Si l'un des deux champs vaut *, seul l'autre compte. Pour exécuter une tâche le vendredi 13, planifiez-la chaque vendredi et vérifiez la date dans le script. D'autres planificateurs, y compris certains services cloud, peuvent appliquer des règles différentes : consultez leur documentation.
Fuseaux horaires et heure d'été
Cron fonctionne selon l'horloge de la machine ou du service sur lequel il tourne, qui correspond normalement au fuseau horaire local de cette machine. Une tâche réglée sur 02:30 s'exécute à 02:30 sur cette horloge. Vérifiez d'abord le fuseau (sous Linux, date l'affiche). Si vous voulez que les tâches suivent une seule horloge partout, de nombreuses équipes font tourner leurs serveurs en UTC, et certains planificateurs permettent de définir un fuseau horaire pour chaque tâche.
L'heure d'été modifie l'horloge deux fois par an. Au printemps, de nombreux endroits passent directement de 02:00 à 03:00, si bien qu'une tâche prévue à 02:30 n'a pas de moment pour s'exécuter. En automne, la plage horaire de 01:00 à 01:59 se produit deux fois. Les planificateurs gèrent ces cas différemment : certains sautent la tâche, d'autres l'exécutent une fois, d'autres encore deux fois. Évitez de planifier les tâches pendant la plage de changement du petit matin, ou utilisez UTC, si la différence compte pour vous.
Six champs et Quartz
Certains planificateurs ajoutent un champ de secondes au début, donc /10 * * * * s'exécute toutes les 10 secondes. Le planificateur Quartz pour Java utilise les secondes, les minutes, les heures, le jour du mois, le mois, le jour de la semaine et une année facultative. Il ajoute quatre caractères spéciaux :
?signifie « aucune valeur précise ». Quartz exige sa présence dans le champ du jour du mois ou dans celui du jour de la semaine, selon celui que vous ne définissez pas.Lsignifie dernier.Ldans le champ du jour du mois désigne le dernier jour du mois, et6Ldans le champ du jour de la semaine désigne le dernier vendredi.Wsignifie le jour de semaine le plus proche.15Wdésigne le jour de semaine le plus proche du 15, et il ne passe pas dans un autre mois.#signifie le n-ième jour de semaine.6#3désigne le troisième vendredi.
Quartz numérote les jours différemment de la forme à cinq champs. Son 1 correspond au dimanche et son 7 au samedi, donc du lundi au vendredi s'écrit 2-6, et non 1-5. Vérifiez toujours le format utilisé par votre planificateur avant de copier une ligne.
Erreurs courantes
*/7dans le champ des minutes. Les valeurs sont 0, 7, 14, et ainsi de suite jusqu'à 56. La suivante serait 63, qui n'existe pas, donc l'exécution après 56 a lieu à la minute 0 de l'heure suivante. L'écart n'est que de quatre minutes, et l'espacement est irrégulier. Utilisez un pas qui divise 60 de façon exacte, comme 5, 10, 15 ou 30.- Le 30 février. Cette date n'existe pas, donc
0 0 30 2 *ne s'exécute jamais. Il en va de même du 31 dans un mois de 30 jours. Avec la règle « l'un ou l'autre », une restriction sur le jour de la semaine peut tout de même déclencher une exécution les autres jours, vérifiez donc le résultat. - Heure 24 ou minute 60. Ces valeurs sont hors plage. La plupart des planificateurs les refusent à l'enregistrement, mais pas tous.
- Attendre des secondes. Une ligne à cinq champs ne s'exécute qu'à des minutes entières.
- Confondre cron et les expressions régulières. Dans cron,
signifie toutes les valeurs. Dans une expression régulière,signifie répéter l'élément qui le précède. Utilisez le Testeur regex pour les motifs, et gardez les lignes cron à part.
Vérifiez les prochaines exécutions
Avant de vous fier à une planification, lisez la ligne en mots simples et listez ses prochaines heures d'exécution. L'Explicateur d'expression cron fait les deux, et c'est le moyen le plus rapide de repérer la règle « l'un ou l'autre » ou un pas inhabituel.
Réponses rapides
Le premier champ désigne-t-il les minutes ou les secondes ?
Les minutes, dans la forme standard à cinq champs. Seuls certains planificateurs à six champs ajoutent les secondes, et ils les placent en premier.
Pourquoi ma tâche s'exécute-t-elle les vendredis et aussi le 13 ?
Les champs du jour du mois et du jour de la semaine sont tous deux définis, donc la tâche s'exécute lorsque l'un ou l'autre correspond. Mettez l'un des deux champs à * si vous voulez seulement l'autre.
Cron utilise-t-il UTC ?
Seulement si la machine ou le service est réglé sur UTC. Sinon, il utilise le fuseau horaire local de ce système.
Traduit de Version originale anglaise avec l’aide de l’IA.
Commentaires
Aucun commentaire pour l’instant. Soyez le premier.


