Analyseur d'expressions Cron et calcul des prochaines exécutions

Analyse une expression cron (minute heure jour mois jour de la semaine) et affiche sa planification en langage clair. Prend en charge les pas, les plages et les listes, et calcule les 5 prochaines exécutions. Utile pour lire une crontab ou la planification GitHub Actions.

Syntaxe de l'expression cron (5 champs)

Une expression cron comporte 5 champs séparés par des espaces, de gauche à droite : minute, heure, jour du mois, mois et jour de la semaine. Chaque champ accepte les caractères spéciaux suivants.

Position Champ Valeurs autorisées
1 Minute 0-59
2 Heure 0-23
3 Jour du mois 1-31
4 Mois 1-12
5 Jour de la semaine 0-7

Le jour de la semaine est normalement 0 = dimanche à 6 = samedi, mais cet outil accepte aussi 7 comme alias de dimanche, utilisé par certaines implémentations de cron (traité comme 0).

Chaque champ accepte "*" (toute valeur), les listes séparées par des virgules (1,15,30), les plages avec un tiret (1-5) et les pas avec une barre oblique (*/15, 1-30/5), qui peuvent être librement combinés.

Modèles cron courants

Expression cron Signification
* * * * * S'exécute chaque minute.
*/5 * * * * S'exécute toutes les 5 minutes.
0 * * * * S'exécute une fois par heure, à la minute 0.
0 0 * * * S'exécute tous les jours à minuit (00:00).
0 9 * * 1-5 S'exécute à 9h en semaine (du lundi au vendredi).
0 0 1 * * S'exécute à minuit le 1er de chaque mois.
0 0 1 1 * S'exécute à minuit le 1er janvier de chaque année.
*/15 9-17 * * 1-5 S'exécute toutes les 15 minutes entre 9h et 17h en semaine.

Ce qu’est une expression cron

Une expression cron énonce en une seule ligne quand une tâche répétée doit s’exécuter. Cinq champs – minute, heure, jour du mois, mois et jour de la semaine – se rangent depuis la gauche, séparés par des espaces, et chacun peut combiner * pour toutes les valeurs, une liste séparée par des virgules, un intervalle avec un tiret et un pas avec une barre oblique. */15 9-17 * * 1-5 signifie donc « toutes les quinze minutes de neuf à dix-sept heures, du lundi au vendredi ».

Cet outil analyse ce que vous saisissez et, **après avoir énoncé la planification en toutes lettres, calcule les cinq prochaines exécutions** à compter de maintenant. Le détail par champ figure à côté : vous voyez quelle part agit. Le jour de la semaine va de 0 pour dimanche à 6 pour samedi ; la forme 7 pour dimanche, employée par certaines mises en œuvre, est également acceptée et traitée en interne comme 0. La recherche des exécutions à venir porte sur quatre ans environ ; si rien n’y correspond, cela est dit clairement.

Comment se servir de l’analyseur cron

  1. Saisissez l’expression Donnez les cinq champs – minute, heure, jour, mois, jour de la semaine – séparés par des espaces. Un nombre de champs erroné, ou une valeur hors bornes, entraîne un message.
  2. Cliquez sur « analyser » Le sens de la planification paraît en toutes lettres. Vérifiez d’abord ici que vous n’avez pas mal lu votre propre expression.
  3. Parcourez le détail par champ Ce que représente chacun des champs minute, heure, jour, mois et jour de la semaine est énuméré. Cela dénonce tout champ portant une valeur que vous n’aviez pas voulue.
  4. Lisez les prochaines exécutions Les cinq moments à venir sont donnés en dates et heures. Un écart avec votre intention – fixer le 31 dans des mois qui n’en ont pas, par exemple – apparaît sous forme de dates concrètes.
  5. Empruntez aux motifs courants Un tableau rassemble les plus familiers : chaque minute, toutes les cinq minutes, à l’heure pile, neuf heures en semaine. Partir du plus proche et le modifier est la voie rapide.

Astuces pour en tirer le meilleur parti

  • Les champs peuvent librement combiner des listes séparées par des virgules, des plages avec un tiret et des pas avec une barre oblique, comme dans "*/15 9-17 * * 1-5".
  • Le jour de la semaine est normalement 0-6 (dimanche à samedi), mais cet outil accepte aussi le 7 comme alias courant du dimanche utilisé par certaines implémentations de cron.
  • Si le jour du mois et le jour de la semaine sont tous deux restreints (pas *), le cron standard les traite comme une condition OU : la tâche s'exécute si l'une des deux conditions est remplie.
  • Le déclencheur schedule de GitHub Actions utilise la même syntaxe cron à 5 champs que cet outil, il peut donc aussi servir à vérifier précisément quand un workflow s'exécutera.
  • L'heure d'exécution réelle dépend du fuseau horaire configuré sur le serveur ; il est donc utile de vérifier aussi l'heure actuelle du serveur après avoir modifié une crontab.

Où l’analyseur cron est utile

Vérifier le sens avant de l’inscrire au crontab

Analysé avant d’être enregistré sur un serveur, il prévient les mésaventures d’une tâche qui tourne bien plus souvent que voulu – ou qui ne tourne jamais.

Contrôler une planification GitHub Actions

L’expression sous le schedule d’un flux de travail use de la même notation à cinq champs. La liste des exécutions à venir montre si l’intervalle est bien celui que vous vouliez.

Déchiffrer l’expression d’un autre

Lorsqu’une configuration héritée porte quelque chose comme 0 */6 * * *, la mettre en mots vous dit aussitôt à quelles heures elle se déclenche.

Enquêter sur une exécution qui a dévié

Quand une tâche n’a pas tourné à l’heure prévue, la liste des exécutions à venir sépare « la cause est l’expression elle-même » de « la cause est ailleurs ».

Quand vous voulez compter les jours entre exécutions

Pour compter le temps qui reste jusqu’à la prochaine, prenez le compte à rebours ; pour compter en jours ouvrés, le calcul en jours ouvrés.

Termes relatifs à cron

cron
Le dispositif des systèmes de type Unix pour exécuter des tâches de façon répétée à des heures fixées. Le tableau qui apparie chaque tâche à son horaire s’appelle crontab.
Champ
Chaque élément d’une expression cron, séparé par des espaces. De gauche à droite : minute (0–59), heure (0–23), jour du mois (1–31), mois (1–12) et jour de la semaine (0–6).
Astérisque
Représente toutes les valeurs que le champ peut prendre. Placé dans la minute, il signifie chaque minute ; dans le mois, chaque mois.
Pas
Écrit */15 et semblables pour énoncer un intervalle. Il prélève des valeurs sur toute l’étendue selon une foulée fixe – toutes les quinze minutes, par exemple.
Intervalle
Écrit 1-5 pour prendre ensemble une suite de valeurs consécutives. Dans le champ du jour de la semaine, c’est du lundi au vendredi ; dans celui de l’heure, de une heure à cinq.
Numérotation des jours
0 est dimanche et 6 samedi. Certaines mises en œuvre acceptent en outre 7 pour dimanche, et cet outil traite 7 comme 0.
Fuseau horaire
cron se lit d’ordinaire à l’heure de l’environnement où il tourne. Si l’horloge d’un serveur n’est pas celle que vous supposez, la même expression se déclenchera à une autre heure.

Questions fréquentes

Oui. La spécification standard de cron utilise 0 pour le dimanche, mais certaines implémentations (comme Vixie cron) acceptent aussi 7 comme notation alternative pour le dimanche. Cet outil interprète les deux comme le dimanche.

Il ne s'agit pas d'une priorité, mais d'une condition OU. Lorsque le jour du mois et le jour de la semaine sont tous deux restreints (pas *), la tâche s'exécute tout jour remplissant l'une des deux conditions. Si un seul des deux champs est restreint, seule cette condition s'applique.

Le format de base à 5 champs (minute heure jour mois jour de la semaine) est identique. La principale différence est que les planifications GitHub Actions sont toujours évaluées en UTC, et l'exécution réelle peut être retardée de quelques minutes à plusieurs dizaines de minutes, contrairement à une crontab de serveur.

Oui, les pas (une valeur de départ avec une barre oblique, ou */intervalle) peuvent être utilisés dans chacun des cinq champs. Cependant, pour les champs à faible plage de valeurs, comme le mois ou le jour de la semaine, les combinaisons pratiques restent limitées.
Tool-kun

Anecdote — Un demi-siècle de cron

Le nom « cron » proviendrait du grec Chronos, qui signifie « le temps », et c'est le planificateur de tâches classique depuis les débuts d'UNIX dans les années 1970. Sa syntaxe compacte à cinq champs peut exprimer aussi bien « chaque minute » que « une date et une heure précises, une fois par an », et elle est encore largement utilisée près d'un demi-siècle plus tard.

Aujourd'hui, cette même syntaxe cron à 5 champs est utilisée non seulement dans les crontabs des serveurs Linux, mais aussi dans de nombreux outils CI/CD et plateformes de conteneurs, comme GitHub Actions, GitLab CI et les CronJobs de Kubernetes. C'est un exemple frappant d'une syntaxe conçue à l'ère UNIX qui continue de prospérer sans changement dans des environnements cloud natifs.

L'un des aspects les plus déroutants de la syntaxe cron est son comportement lorsque le jour du mois et le jour de la semaine sont définis ensemble. On est tenté de supposer une condition ET (les deux doivent être remplies), mais la spécification réelle est une condition OU (l'une des deux suffit), ce qui est une cause fréquente de tâches s'exécutant plus souvent que prévu.