Générateur et lecteur d'expressions cron

Construisez une expression cron à l'aide de sélecteurs guidés, ou collez-en une pour en obtenir la description en français et les prochaines exécutions.

à
à
*/15 9-18 * * 1-5

Toutes les 15 minutes, de 9h à 18h, du lundi au vendredi.

Comment lire une expression cron ?

Une expression cron est une ligne de cinq champs séparés par des espaces qui décrit un moment de déclenchement récurrent : minute, heure, jour du mois, mois, jour de la semaine. L'ordonnanceur la relit à chaque minute et exécute la tâche associée dès que les cinq champs correspondent à l'instant courant. Les champs sont toujours dans le même ordre :

ChampPlageExemple
Minute0-59*/15
Heure0-239-18
Jour du mois1-31*
Mois1-12*
Jour de la semaine0-7 (0 et 7 = dimanche)1-5

L'exemple ci-dessus (*/15 9-18 * * 1-5) s'exécute toutes les 15 minutes, de 9h à 18h, du lundi au vendredi.

Caractères spéciaux

*Chaque valeur possible du champ
,Liste de valeurs (ex. 1,3,5)
-Intervalle (ex. 9-18)
/Pas, à partir de la valeur de départ (ex. */15)

Le pas part toujours de la borne basse du champ, pas de l'heure d'installation de la tâche : */20 dans le champ des minutes donne 0, 20 et 40. Il se combine avec un intervalle (0-30/10 donne 0, 10, 20 et 30) et les notations se mélangent dans un même champ avec la virgule (0,30 8-20 * * *). L'analyseur de cette page accepte ces quatre notations et rien d'autre : ni les raccourcis @daily, ni les noms abrégés JAN / MON, ni les extensions L, W, # ou ? propres à Quartz.

Le piège du jour du mois et du jour de la semaine

C'est l'erreur la plus fréquente. Quand les deux champs de jour sont restreints en même temps, cron ne les combine pas par un ET mais par un OU : 0 6 1 * 1 ne veut pas dire « le 1er du mois s'il tombe un lundi » mais « le 1er de chaque mois, ET aussi tous les lundis ». Pour n'obtenir qu'une seule condition, laissez l'autre champ à *. La description en français affichée ci-dessus signale explicitement ce cas quand il se présente.

Expressions cron les plus utilisées

ExpressionDéclenchement
* * * * *Chaque minute
*/5 * * * *Toutes les 5 minutes
*/15 * * * *Toutes les 15 minutes (aux minutes 0, 15, 30 et 45)
0 * * * *Toutes les heures, à l'heure pile
0 3 * * *Tous les jours à 3h du matin
30 2 * * *Tous les jours à 2h30
0 9-18 * * 1-5Toutes les heures de 9h à 18h, du lundi au vendredi
0 8 * * 1Tous les lundis à 8h
0 0 * * 0Tous les dimanches à minuit
0 4 1 * *Le 1er de chaque mois à 4h
0 0 1 1 *Le 1er janvier à minuit, une fois par an
*/10 0-6 * * *Toutes les 10 minutes, entre minuit et 6h

L'astérisque signifie « chaque valeur possible » pour ce champ : dans le champ des minutes, cela veut dire chaque minute ; dans le champ des mois, chaque mois. Une expression composée de cinq astérisques (* * * * *) s'exécute donc toutes les minutes, toute l'année.

*/5 * * * * — le pas /5 appliqué au champ des minutes déclenche la tâche aux minutes 0, 5, 10, 15… jusqu'à 55, à chaque heure de chaque jour. La même logique s'applique aux autres champs : 0 */6 * * * s'exécute toutes les 6 heures, à 0h, 6h, 12h et 18h.

Le pas part de la plus petite valeur du champ, pas de l'heure à laquelle vous installez la tâche. */20 dans le champ des minutes donne 0, 20 et 40 — jamais 7, 27 et 47. Pour restreindre un pas à une plage, combinez intervalle et pas : 0-30/10 donne 0, 10, 20 et 30.

Quand un seul des deux champs est restreint, la règle est intuitive. Mais quand jour du mois ET jour de la semaine sont TOUS LES DEUX précisés (ni l'un ni l'autre à *), cron applique une règle OU, pas ET : la tâche s'exécute dès que l'une des deux conditions est vraie, pas seulement quand les deux le sont en même temps. C'est une source classique de confusion.

Non. L'analyseur ne gère que la syntaxe à cinq champs numériques avec *, la virgule, l'intervalle et le pas. Les raccourcis (@daily, @hourly), les noms abrégés de mois et de jours (JAN, MON) et les extensions non standard (L pour le dernier jour, W, #, ? de Quartz) ne sont pas reconnus et provoquent une erreur explicite indiquant le champ fautif.

Dans le fuseau horaire de votre navigateur (affiché au-dessus de la liste des prochaines exécutions). Un cron réel s'exécute dans le fuseau du serveur qui l'exécute, qui peut différer du vôtre — un décalage fréquent entre un poste français et un serveur configuré en UTC.

Non. Le parsing, la description en français et le calcul des prochaines exécutions se font entièrement dans votre navigateur, en JavaScript.

Autres outils · Développeur