← Retour à l'outil
*

Crontab · Syntaxe · Champs · Référence

Syntaxe crontab : comprendre les 5 champs cron

Mise à jour : mai 2026

Une ligne crontab paraît compacte, mais elle suit toujours la même structure. Une fois les cinq champs compris, lire une expression comme 0 9 * * 1-5 devient immédiat.

Ouvrir le générateur cron →

Validation, explication et prochaines dates

Anatomie d'une ligne crontab

┌── minute (0-59)
│ ┌── heure (0-23)
│ │ ┌── jour du mois (1-31)
│ │ │ ┌── mois (1-12 ou JAN-DEC)
│ │ │ │ ┌── jour de semaine (0-7 ou SUN-SAT)
│ │ │ │ │
* * * * *  /chemin/vers/commande

Les cinq champs de temps précèdent la commande. La commande s'exécute quand la date courante correspond aux champs de temps.

Valeurs autorisées

ChampValeursNote
Minute0-59Minute dans l'heure
Heure0-230 = minuit
Jour du mois1-31Jour calendaire
Mois1-12Ou JAN-DEC
Jour semaine0-70 et 7 = dimanche

Caractères spéciaux

  • * : toutes les valeurs possibles.
  • , : liste de valeurs, par exemple 9,17.
  • - : plage, par exemple 1-5.
  • / : pas, par exemple */15.

Ces formes se combinent : */10 8-18 * * 1-5 signifie toutes les 10 minutes entre 8 h et 18 h, du lundi au vendredi.

Lire une expression de gauche à droite

La méthode la plus fiable consiste à lire l'expression dans l'ordre exact des champs, sans chercher à deviner le sens global trop vite. Prenez 30 2 * * 1. Le premier champ dit minute 30, le deuxième heure 2, le troisième n'impose aucun jour du mois, le quatrième n'impose aucun mois, et le dernier impose lundi. La lecture devient donc "à 02:30 chaque lundi". Cette discipline évite l'erreur classique entre minute et heure, surtout avec des expressions comme 0 */6 * * *, qui signifie toutes les six heures, pas toutes les six minutes.

Pour les équipes, il est utile d'ajouter un commentaire au-dessus des lignes importantes. Dans une crontab, une ligne commençant par # est ignorée. Vous pouvez donc écrire # Rapport hebdomadaire lundi 08:00 Europe/Paris, puis la ligne cron. Ce commentaire ne change rien à l'exécution, mais il réduit les erreurs lors d'une relecture six mois plus tard.

Différence entre crontab utilisateur et crontab système

La plupart des exemples montrent une crontab utilisateur, celle que l'on modifie avec crontab -e. Elle contient cinq champs de temps, puis la commande. Les fichiers système comme /etc/crontab ou certains fichiers dans /etc/cron.d/ ajoutent souvent un champ supplémentaire : l'utilisateur sous lequel exécuter la commande. Dans ce cas, la forme devient minute, heure, jour du mois, mois, jour de semaine, utilisateur, commande.

Cette différence est une source fréquente de bugs. Copier une ligne depuis /etc/crontab vers une crontab utilisateur sans retirer le nom d'utilisateur casse la commande. L'inverse est aussi vrai : une ligne utilisateur collée dans /etc/cron.d/ sans champ utilisateur ne sera pas interprétée comme prévu. Quand vous cherchez "format cron" ou "syntaxe crontab", vérifiez toujours le contexte d'utilisation.

Jour du mois et jour de semaine : le point subtil

La syntaxe cron paraît simple, mais les deux champs de jour ont une règle qui surprend beaucoup de développeurs. Si vous limitez à la fois le jour du mois et le jour de semaine, certaines implémentations lancent la tâche quand l'un ou l'autre correspond. Par exemple, 0 9 1 * 1 peut s'exécuter le 1er de chaque mois et tous les lundis, au lieu de viser uniquement "le premier lundi".

Pour rester portable, ne limitez qu'un seul champ de jour quand c'est possible. Pour "tous les lundis", utilisez 0 9 * * 1. Pour "le premier du mois", utilisez 0 9 1 * *. Pour une règle plus complexe comme "premier lundi du mois", cron Unix standard n'est pas l'outil idéal à lui seul : lancez un script tous les lundis et laissez le script vérifier si la date est comprise entre le 1er et le 7.

Portabilité entre Linux, Quartz et plateformes cloud

La crontab Unix standard utilise cinq champs. Quartz, le planificateur Spring et certaines plateformes ajoutent un champ secondes en tête, parfois même une année en fin d'expression. Une expression valide dans un outil peut donc être décalée ou refusée ailleurs. 0 9 * * 1 est une expression Unix à cinq champs. En Quartz, l'équivalent peut devenir 0 0 9 ? * MON, avec une syntaxe différente pour le jour du mois.

Si votre objectif est une crontab Linux, restez sur les cinq champs classiques. Si vous configurez un job Kubernetes, un workflow CI ou un ordonnanceur applicatif, consultez la documentation de la plateforme. Le générateur de cette page vise la lecture et la validation des expressions Unix courantes, avec un mode six champs pour les besoins simples avec secondes, mais il ne remplace pas les extensions spécifiques de chaque ordonnanceur.

Questions fréquentes

Où mettre la commande ?

Après les cinq champs de temps, séparée par un espace.

Les zéros initiaux sont-ils obligatoires ?

Non. 09 et 9 sont équivalents dans la plupart des crontabs.

Cron utilise quel fuseau horaire ?

La crontab classique suit le fuseau horaire local de la machine.