Constructeur d'expressions Cron
ConversionCompose, valide et explique des expressions cron. Calcule le prochain déclenchement (UTC).
- Prochaine exécution (UTC)
- —
- Copier
- —
Sur cette page
Qu’est-ce qu’une expression cron ?#
Une expression cron est un planning compact écrit sous forme de cinq champs séparés par des espaces : minute heure jour-du-mois mois jour-de-la-semaine. Une ligne comme 0 9 * * 1-5 se lit de gauche à droite comme « à la minute 0, à l’heure 9, tous les jours du mois, tous les mois, les jours de 1 à 5 (lundi à vendredi) » — c’est-à-dire 09:00 les jours ouvrés. Chaque * signifie « toutes les valeurs de ce champ » : plus vous fixez de champs, plus le planning est précis ; plus vous laissez de *, plus il se déclenche souvent.
Cron est le langage de planification natif de crontab sous Linux, de GitHub Actions, des CronJob Kubernetes, de la plupart des systèmes d’intégration continue et d’innombrables ordonnanceurs de tâches. Écrire une expression correcte n’est que la moitié du travail ; l’autre moitié, c’est la subtilité jour-du-mois / jour-de-la-semaine (voir la FAQ ci-dessous), qui piège même les ingénieurs chevronnés. Cette page analyse vos cinq champs au fil de la frappe, signale le champ exact qui contient une erreur de syntaxe ou de plage, et calcule la prochaine exécution afin que vous puissiez confirmer que le planning se déclenche bien quand vous le pensez.
Comment l’utiliser#
- Modifiez le champ Expression en haut. Il démarre sur
* * * * *(chaque minute). - En dessous se trouvent cinq listes déroulantes — une par champ (minute, heure, jour-du-mois, mois, jour-de-la-semaine). Chacune propose les fragments courants pour ce champ (
*,*/5,0,1-5,0,6…) ; en choisir un l’insère à la position correspondante de l’expression, ce qui est pratique quand vous ne vous souvenez plus si*/15va dans l’emplacement des minutes. - La ligne des Modèles remplit en un clic des plannings de démarrage complets : chaque minute, chaque heure, chaque jour, chaque semaine, chaque mois, chaque année, les jours ouvrés.
- Le panneau de sortie affiche Prochaine exécution (le premier instant à ou après l’heure courante qui correspond) et une ligne d’état qui confirme soit une analyse valide, soit nomme le champ fautif. Cliquez sur now() pour recalculer par rapport à l’instant courant.
Fonctionnalités clés#
- Grammaire complète à cinq champs. Prend en charge
*, les listes à virgules (0,15,30,45), les plages (1-5), les pas (*/15,9-17/2) et les noms de mois/jours (JAN-DEC,SUN-SAT, insensibles à la casse).7est accepté pour dimanche et normalisé en0. - Logique jour-du-mois / jour-de-la-semaine correcte. Implémente la règle Vixie-cron standard : quand les deux champs sont restreints, la tâche se déclenche si l’un ou l’autre correspond (OU logique) ; quand un seul est restreint, les deux doivent correspondre (ET). Beaucoup de calculateurs naïfs se trompent sur ce point.
- Erreurs précises par champ. Une plage invalide ou une lettre parasite est signalée avec le champ exact en faute (
minute,hour…), et non un générique « expression invalide ». - Prochaine exécution en UTC. Le prochain déclencheur est calculé sur les composantes UTC de l’instant : le résultat est donc déterministe quel que soit l’endroit d’où la page est chargée, puis rendu sous forme de date normale que vous pouvez copier.
- Garde-fou d’inaccessibilité. Une expression qui ne peut jamais correspondre (par exemple un jour-du-mois qu’aucun mois ne contient) est détectée plutôt que de boucler indéfiniment.
Exemple commenté#
Saisissez 0 9 * * 1-5 pour un point quotidien en jours ouvrés. Champ par champ : minute 0, heure 9, jour-du-mois *, mois *, jour-de-la-semaine 1-5. Le champ date (*) et le champ jour-de-la-semaine (1-5) sont tous deux concernés, mais seul le jour de la semaine est restreint — la date est un joker — donc le chemin ET s’applique : déclenchement à 09:00 les jours allant du lundi au vendredi. Prochaine exécution affiche le prochain instant 09:00 UTC d’un jour ouvré.
Comparez maintenant avec 0 0 1 * 1 — « minute 0, heure 0, le 1er du mois, tous les mois, lundi ». Ici le jour-du-mois (1) ET le jour-de-la-semaine (1) sont tous deux restreints, donc cron emprunte le chemin OU : la tâche se déclenche le 1er de chaque mois et chaque lundi — et non « les lundis qui tombent le 1er », qui est l’interprétation erronée presque universelle. Le panneau Prochaine exécution rend la différence visible : vous le verrez basculer sur le lundi le plus proche même lorsque ce lundi n’est pas le 1er.
FAQ#
Pourquoi ma tâche se déclenche-t-elle des jours auxquels je ne m’attendais pas ?#
C’est presque toujours l’interaction jour-du-mois / jour-de-la-semaine. Le cron standard les traite comme un OU lorsque les deux sont fixés : 0 0 1 * 1 signifie « le 1er, ou n’importe quel lundi », et non « le 1er uniquement si c’est un lundi ». Si vous voulez une tâche qui ne s’exécute que lorsque le 1er est un lundi, cron lui-même ne peut pas l’exprimer — planifiez le 1er et ajoutez un contrôle de jour de la semaine à l’intérieur du script.
Que signifient */5 et 9-17/2 ?#
*/5 dans le champ des minutes signifie « à partir de 0, une valeur sur 5 » → 0, 5, 10, 15, …, 55. 9-17/2 signifie « dans la plage 9 à 17, une valeur sur 2 » → 9, 11, 13, 15, 17 — utile pour « toutes les deux heures pendant les heures de bureau ». Le diviseur de pas après / s’applique à toute la plage ou au joker qui le précède.
0 ou 7, c’est dimanche ?#
Les deux. Le champ jour-de-la-semaine accepte 0 et 7 pour dimanche (cron utilise historiquement 0 ; certains systèmes ont ajouté 7). Cet outil accepte les deux et normalise 7 en 0. Les noms fonctionnent aussi : SUN, Mon, fri sont tous insensibles à la casse.
L’expression est valide mais Prochaine exécution paraît lointaine. Est-ce faux ?#
Probablement pas — cela signifie généralement que le planning ne peut vraiment pas se déclencher prochainement. 0 0 29 2 * (29 février) est valide mais ne correspond que les années bissextiles, donc la prochaine exécution peut être éloignée de plusieurs années. L’outil plafonne sa recherche à environ huit ans ; une expression qui ne peut pas correspondre dans cette fenêtre est signalée comme inaccessible plutôt que de figer la page.