Utilia

Générateur d'expressions cron

Créez une expression cron champ par champ, lisez-la en clair, voyez ses prochaines exécutions par fuseau et convertissez-la pour systemd, Quartz ou AWS.

Constructeur

ChampModeValeur
Minute0–59
Heure0–23
Jour du mois1–31, L
Mois1–12 ou JAN–DEC
Jour de la semaine0–7 (0 et 7 = dimanche) ou SUN–SAT

Comment créer une expression cron

  1. Saisissez ou collez une expression dans Expression cron, ou choisissez-en une dans Préréglages. Les macros comme @daily ou @weekly sont aussi acceptées.
  2. Vous pouvez aussi passer par le Constructeur : pour chaque champ, choisissez un Mode (Tous, Tous les N, Valeurs précises, Plage ou Personnalisé) et remplissez la Valeur. L’expression se met à jour au fur et à mesure, et modifier l’expression met à jour le constructeur.
  3. Cochez Ajouter un champ secondes (6 champs) si votre planificateur gère les secondes.
  4. Lisez la planification En clair, puis vérifiez les Prochaines exécutions. Choisissez le Fuseau horaire du serveur qui exécute la tâche et Combien d’exécutions afficher.
  5. Copiez l’expression avec Copier, ou utilisez l’un des Autres formats.

Les erreurs sont expliquées champ par champ, par exemple « Minute : 61 est hors limites (0–59) » : vous savez exactement quoi corriger.

Les cinq champs d’une ligne cron

Une ligne cron standard (Vixie cron) compte cinq champs, suivis de la commande :

Champ Valeurs autorisées
Minute 0–59
Heure 0–23
Jour du mois 1–31
Mois 1–12 ou JAN–DEC
Jour de la semaine 0–7 (0 et 7 = dimanche) ou SUN–SAT

Chaque champ accepte * (toutes les valeurs), une liste 1,15, une plage 9-17, un pas */15 (toutes les 15 unités) ou une plage avec un pas 0-30/10. Ainsi, */15 9-17 * * 1-5 signifie toutes les 15 minutes de 9 h à 17 h 45, du lundi au vendredi.

Une règle surprend souvent : quand le Jour du mois et le Jour de la semaine sont tous deux restreints, le cron classique s’exécute si l’un ou l’autre correspond. 0 0 13 * 5 tourne tous les 13 du mois et tous les vendredis, pas seulement les vendredis 13. L’outil affiche alors un avertissement.

Prochaines exécutions et fuseaux horaires

Cron suit l’horloge de la machine, ou la variable CRON_TZ/TZ de la crontab. La liste des Prochaines exécutions est calculée pour le fuseau choisi, changements d’heure compris : au passage à l’heure d’été, une tâche prévue à 2 h 30 peut être sautée, et à l’automne elle peut s’exécuter une ou deux fois selon l’implémentation. Pour une tâche qui doit tourner exactement une fois, évitez la plage 1 h–3 h ou travaillez en UTC.

Vixie cron, timers systemd, Quartz et AWS

  • Les timers systemd utilisent OnCalendar= avec une autre syntaxe : Mon..Fri *-*-* 09..17:00/15:00. Les conditions sur le jour de la semaine et la date s’y combinent par un ET, pas un OU : certaines expressions cron n’ont donc pas d’équivalent exact.
  • Quartz et Spring placent un champ secondes en tête et peuvent ajouter un champ année. L’un des deux champs de jour doit valoir ?, et Quartz numérote les jours de 1 à 7 en partant du dimanche, contrairement au 0–6 de cron. L’outil écrit les jours en toutes lettres (MON-FRI) pour éviter ce piège.
  • AWS EventBridge utilise cron(minutes heures jour mois jour-semaine année) : six champs, sans secondes, un ? dans l’un des champs de jour et l’année à la fin.

Le cron standard n’a pas de champ secondes. La forme à 6 champs est reconnue par de nombreuses bibliothèques (node-cron, Spring, Quartz), mais pas par la crontab du système.

Questions fréquentes

Comment lancer une tâche toutes les 5 minutes ?

Utilisez */5 * * * *. La tâche s’exécute aux minutes 0, 5, 10… de chaque heure.

Comment lancer une tâche le dernier jour du mois ?

Beaucoup de planificateurs acceptent L dans le champ jour du mois : 0 18 L * *. Avec le Vixie cron de base, lancez la tâche chaque jour du 28 au 31 et vérifiez dans le script que le lendemain est le 1er.

À quoi sert @reboot ?

La commande s’exécute une fois, au démarrage du démon cron. Il n’y a pas de planning : l’outil ne peut donc pas afficher de dates.

Pourquoi ma tâche ne s'exécute-t-elle pas à l'heure affichée ?

Vérifiez le fuseau horaire du serveur, la crontab utilisée (celle de l’utilisateur ou /etc/crontab, qui comporte un champ utilisateur en plus) et le PATH : cron démarre avec un environnement minimal.

Le dimanche, c'est 0 ou 7 ?

Les deux. Dans le champ jour de la semaine, 0 et 7 désignent le dimanche, 1 le lundi et 6 le samedi.