Expression cron expliquée
L’outil fonctionne dans les deux sens : saisissez une planification au format crontab pour la voir expliquée, ou décrivez-la avec des mots pour obtenir l’expression.
Cinq champs : minute, heure, jour du mois, mois et jour de la semaine. Un sixième champ pour les secondes peut venir en premier.
Exemples
Signifie
Toutes les 15 minutes de 5 à 59, pendant les heures 9–17, le lundi–vendredi
Champ par champ
| Champ | Expression | Valeurs |
|---|---|---|
| Minute | 5-59/15 | 5, 20, 35, 50 |
| Heure | 9-17 | 9, 10, 11, 12, 13, 14, 15, 16, 17 |
| Jour du mois | * | toutes |
| Mois | * | toutes |
| Jour de la semaine | MON-FRI | lundi, mardi, mercredi, jeudi, vendredi |
Prochaines exécutions
…
L’heure d’été est gérée comme dans Vixie cron et cronie : une heure fixe s’exécute une seule fois même si l’heure est sautée ou répétée, tandis que les tâches avec * dans les minutes ou les heures suivent la nouvelle horloge.
Comment ça marche
Une expression cron comporte cinq champs séparés par des espaces : minute (0–59), heure (0–23), jour du mois (1–31), mois (1–12) et jour de la semaine (0–7, où 0 et 7 désignent tous deux le dimanche). Chaque minute, cron vérifie si l’horloge correspond à tous les champs et, si c’est le cas, lance la tâche.
Dans chaque champ, * signifie toutes les valeurs, 1-5 un intervalle, 1,15 une liste et */15 une valeur sur quinze. Les pas peuvent aussi se combiner avec des intervalles : 5-59/15 donne les minutes 5, 20, 35 et 50. Les mois et les jours de la semaine peuvent s’écrire avec des abréviations anglaises, JAN–DEC et SUN–SAT.
Lorsque le jour du mois et le jour de la semaine sont tous deux restreints, il suffit que l’un des deux corresponde. 0 0 13 * 5 s’exécute donc le 13 de chaque mois et tous les vendredis, et pas seulement le vendredi 13. Cette règle vient de Vixie cron et s’applique sur la plupart des systèmes Linux. Si l’un des champs commence par *, même avec un pas comme */2, les deux doivent correspondre.
Les macros @hourly, @daily, @weekly, @monthly et @yearly (ou @annually) sont des raccourcis pour des planifications courantes, et @reboot exécute la tâche une fois au démarrage de cron. Un sixième champ pour les secondes au début, ? pour « n’importe quel jour » et L pour le dernier jour du mois viennent de Quartz, de Spring et d’ordonnanceurs similaires ; la crontab ordinaire ne les comprend pas.
Cron suit l’heure locale de l’ordinateur. Lors du passage à l’heure d’été, quand l’horloge saute de 2 h à 3 h, une tâche prévue à une heure fixe dans l’heure sautée s’exécute juste après le changement, et lors du retour à l’heure d’hiver elle ne s’exécute qu’une fois. Les tâches avec * dans le champ des minutes ou des heures suivent au contraire la nouvelle horloge. La liste ci-dessous fonctionne de la même manière, dans votre fuseau horaire ou en UTC.
Vérifiez quelle implémentation exécute votre planification. Les services cloud ont souvent leurs propres variantes : AWS EventBridge, par exemple, a six champs avec l’année à la fin et exige ? soit dans le jour du mois, soit dans le jour de la semaine, et beaucoup de services fonctionnent en UTC plutôt qu’en heure locale.
Dans l’autre sens, vous pouvez décrire la planification avec des mots : « chaque lundi à 9h », « toutes les 15 minutes », « le premier jour du mois à 2h30 », « les jours ouvrés entre 9 et 17 » ou « le dernier jour du mois à minuit ». Les heures se lisent sous la forme 9, 9.30, 9:30 et 09h30, les intervalles sous la forme 9–17 et les listes sous la forme 1, 15. Si la phrase est comprise, l’expression s’affiche aussitôt, et l’explication ci-dessus dit en mots ce qu’elle signifie, pour que vous puissiez vérifier qu’elle correspond à ce que vous vouliez. Si elle n’est pas comprise, les mots qui n’ont pas pu être lus sont indiqués, plutôt que de deviner.
Le générateur sous la zone de texte fait la même chose avec des commandes au lieu de mots, et les deux restent synchronisés : une phrase remplit les commandes, et chaque modification des commandes réécrit l’expression. Tout ne peut pas s’exprimer en cron. La crontab ordinaire ne permet de dire ni « le premier lundi du mois » ni « une semaine sur deux », et deux heures différentes dans la même phrase (9h et 17h) s’écrivent sous forme de liste dans le champ des heures : 0 9,17 * * *.