← Retour à l'explicateur de cron AdminTools.fr — Guide développement

Comprendre les expressions Cron

Cron est le planificateur de tâches standard des systèmes Unix/Linux, et sa syntaxe à 5 champs est reprise dans de nombreux outils modernes (CI/CD, Kubernetes CronJob). Ce guide explique sa syntaxe et les pièges les plus fréquents.

Sommaire
Les 5 champs d'une expression cron Les caractères spéciaux Exemples courants Le piège jour-du-mois ET jour-de-semaine Cron dans les outils CI/CD Erreurs courantes Questions fréquentes

Les 5 champs d'une expression cron

Une expression cron standard est composée de 5 champs séparés par des espaces, dans cet ordre précis :

ChampPlage de valeurs
Minute0 à 59
Heure0 à 23
Jour du mois1 à 31
Mois1 à 12
Jour de la semaine0 à 6 (0 = dimanche)

Par exemple, 0 3 * * * signifie "à 3h00 du matin, tous les jours" — minute 0, heure 3, et un astérisque (toutes les valeurs) pour les trois champs restants.

Les caractères spéciaux

Exemples courants

ExpressionSignification
0 3 * * *Tous les jours à 3h00
*/15 * * * *Toutes les 15 minutes
0 9 * * 1-5À 9h00, du lundi au vendredi
0 0 1 * *Le 1er de chaque mois à minuit
0 22 * * 0Tous les dimanches à 22h00

Le piège jour-du-mois ET jour-de-semaine

Si à la fois le champ "jour du mois" et le champ "jour de la semaine" sont restreints (différents de *), la plupart des implémentations cron exécutent la tâche si l'une OU l'autre condition est remplie — pas les deux en même temps. C'est une source fréquente de confusion : 0 0 13 * 5 ne signifie pas "le vendredi 13" mais "le 13 du mois, OU tout vendredi".

Pour exprimer une condition réellement combinée (comme "le vendredi 13 uniquement"), il faut généralement déléguer la vérification à un script appelé par la tâche cron, plutôt qu'à l'expression cron elle-même.

Cron dans les outils CI/CD

La syntaxe cron à 5 champs est reprise telle quelle dans de nombreux outils modernes pour planifier des tâches récurrentes :

Une différence importante : ces plateformes exécutent généralement en UTC par défaut, alors qu'un cron système Linux utilise le fuseau horaire configuré sur la machine — toujours vérifier explicitement le fuseau horaire de référence avant de déployer une tâche planifiée sensible aux horaires.

Utiliser l'explicateur / générateur de cron →

Erreurs courantes

Questions fréquentes

Existe-t-il un 6ème champ pour les secondes ?

Le cron Unix standard n'a que 5 champs (granularité minute). Certains outils (comme Quartz Scheduler en Java, ou certaines bibliothèques) ajoutent un champ secondes en tête, mais ce n'est pas la norme cron classique.

Comment exécuter une tâche toutes les 2 heures ?

0 */2 * * * — exécution à la minute 0 de chaque heure paire (0h, 2h, 4h...).

Pourquoi ma tâche cron ne s'exécute pas alors que l'expression semble correcte ?

Les causes les plus fréquentes hors syntaxe : le service cron n'est pas démarré, le chemin des commandes dans le script n'est pas absolu (l'environnement cron a un PATH minimal), ou des permissions insuffisantes sur le script exécuté.

Quelle est la différence entre crontab utilisateur et système ?

Un crontab utilisateur (édité via crontab -e) ne contient que les 5 champs habituels. Le crontab système (/etc/crontab) ajoute un 6ème champ obligatoire pour préciser l'utilisateur sous lequel la commande doit s'exécuter.

Outils similaires