FreeToGenerate.com

100 % gratuit · sans inscription · tout dans votre navigateur

Saisissez une expression cron pour voir ce qu’elle signifie et quand elle s’exécute.

Tout se passe dans votre navigateur. Rien n’est envoyé.

Aussi disponible en : English · Español · Português · العربية

Analyseur d’expressions cron : la règle du OU qui piège presque tout le monde

Collez une expression cron pour voir ce qu’elle signifie vraiment, ses dix prochaines exécutions, et les pièges du changement d’heure.

Qu’est-ce qu’une expression cron ?

Une expression cron est une ligne de texte à cinq champs qui décrit un calendrier d’exécution récurrent, tel que défini par crontab(5), la page de manuel de référence du cron Unix standard. Chaque champ accepte soit une valeur unique, soit un astérisque qui veut dire « chaque valeur possible », soit une liste séparée par des virgules, soit un intervalle avec un tiret, soit un pas introduit par une barre oblique.

Dans l’ordre, les cinq champs sont : la minute (0 à 59), l’heure (0 à 23), le jour du mois (1 à 31), le mois (1 à 12, ou les noms anglais de trois lettres, de jan à dec) et le jour de la semaine (0 à 7, où 0 et 7 désignent tous les deux dimanche, ou les noms anglais de trois lettres, de sun à sat). Les intervalles sont inclusifs à leurs deux bornes, un pas peut suivre aussi bien un intervalle (1-31/2) qu’un astérisque seul (*/15), et les noms de mois et de jours ne sont pas sensibles à la casse.

Cron reconnaît aussi une poignée de raccourcis en remplacement des cinq champs : @yearly (ou @annually) équivaut à 0 0 1 1 *, @monthly à 0 0 1 * *, @weekly à 0 0 * * 0, @daily (ou @midnight) à 0 0 * * *, et @hourly à 0 * * * *. Il existe également @reboot, qui s’exécute au démarrage du système plutôt qu’à un horaire donné ; comme il n’a pas de calendrier, cet analyseur ne l’accepte pas.

Comment utiliser l’analyseur

  1. Saisissez une expression cron. Tapez les cinq champs séparés par des espaces, comme 0 9 * * 1-5, ou chargez un exemple pour voir tout de suite le résultat.
  2. Choisissez le fuseau horaire. Le sélecteur affiche par défaut celui de votre appareil, et vous pouvez le changer pour vérifier comment le calendrier se comporte ailleurs.
  3. Lisez le résumé et les prochaines exécutions. Le résumé en langage courant, le tableau des cinq champs et la liste des dix prochaines exécutions se mettent à jour automatiquement, avec un avertissement si le changement d’heure saute ou double une heure.

La règle du OU : jour du mois OU jour de la semaine, jamais les deux à la fois

La page de manuel crontab(5) est explicite sur un point que presque personne ne devine : « If both fields are restricted (i.e., do not contain the '*' character), the command will be run when EITHER field matches the current time. » Autrement dit, quand le jour du mois et le jour de la semaine sont tous les deux restreints — aucun des deux n’est un astérisque — cron les combine par OU, pas par ET.

C’est exactement le piège de l’expression 0 0 13 * 5. On la lit presque toujours comme « le vendredi 13 », mais ce n’est pas ce qu’elle dit : elle s’exécute le 13 de chaque mois, OU chaque vendredi, sans aucun lien entre les deux conditions.

La différence n’est pas anecdotique. Comptée pour l’année 2026, cette expression correspond à 61 jours dans l’année, contre seulement 3 vendredis 13 réels cette année-là. Un job censé se déclencher rarement, un vendredi 13 précis, se déclenche en réalité vingt fois plus souvent que prévu.

Aucune expression cron standard à cinq champs ne peut exprimer « le vendredi qui tombe le 13 », puisque les deux champs de jour ne se combinent que par OU. Pour ce cas précis, la seule solution correcte est de planifier la tâche chaque vendredi, ou chaque 13, puis de vérifier la date exacte au tout début du script lui-même, et de ne poursuivre que si les deux conditions sont réunies ce jour-là.

Le changement d’heure, et pourquoi */9 n’est pas un astérisque comme un autre

Le changement d’heure n’est pas un cas oublié par la spécification, il y est prévu explicitement. crontab(5) dit : « non-existent times, such as the 'missing hours' during the daylight savings time conversion, will never match, causing jobs scheduled during the 'missing times' not to be run. Similarly, times that occur more than once ... will cause matching jobs to be run twice. » Cet analyseur reproduit ce comportement exactement, plutôt que de choisir en silence l’une des deux occurrences ou d’ignorer le trou.

À New York en 2026, les horloges avancent le 8 mars et reculent le 1er novembre, et l’effet se mesure minute par minute. Une tâche prévue tous les jours à 02h30 ne s’exécute pas le 8 mars, parce que 02h30 n’existe tout simplement pas ce jour-là. À l’inverse, une tâche prévue tous les jours à 01h30 s’exécute deux fois le 1er novembre, à une heure d’intervalle, parce que 01h30 se produit deux fois quand l’horloge recule. Même une tâche horaire comme 0 * * * * en subit les conséquences : elle tourne 23 fois le 8 mars au lieu de 24, et celle qui manque est précisément l’exécution de 02h00.

La règle du OU n’est pas le seul endroit où les implémentations divergent : la question de savoir ce qui « contient un astérisque » en est un autre, et c’est là que cet outil suit le comportement du cron d’origine plutôt qu’une lecture plus intuitive. Dans le code source de cron, le champ de jour est marqué comme un astérisque à partir de son tout premier caractère, avant même que le reste ne soit analysé : */9 compte donc comme un astérisque et n’est pas considéré comme restreint, ce qui veut dire que la règle du OU décrite plus haut ne s’applique pas à lui.

Un test différentiel sur 5 076 expressions tirées au hasard, comparées à une implémentation de référence très utilisée, a produit 1 262 divergences. En les examinant une par une, elles avaient toutes exactement cette même cause — aucune n’est restée inexpliquée. C’est un désaccord réel entre implémentations plutôt qu’une erreur quelque part, et cet outil tranche en faveur du comportement du cron d’origine.

Pourquoi est-ce gratuit ?

Tout le calcul — l’analyse de l’expression, le résumé en langage courant, la recherche des dix prochaines exécutions et la détection des heures sautées ou doublées par le changement d’heure — se fait entièrement dans votre navigateur, avec les fonctions de fuseau horaire déjà intégrées à JavaScript. Aucun serveur n’a besoin d’intervenir pour produire ce résultat, donc aucun ne le fait.

Il n’y a ni compte à créer, ni limite d’utilisation, ni filigrane sur quoi que ce soit. Votre expression cron ne quitte jamais l’onglet dans lequel vous la tapez : elle n’est ni envoyée, ni journalisée, ni conservée d’une visite à l’autre.