Format d'une expression Cron
I. Structure de base des expressions Cron (avec sources autorisées)
Une expression cron standard se compose de 5 champs de temps et 1 champ de commande, selon les conventions des systèmes Unix et Linux. D'après la norme IEEE Std 1003.1-2017 (norme POSIX)[1] et la documentation Linux man 5 crontab[2], le format est le suivant :
* * * * * command-to-execute
│ │ │ │ │
│ │ │ │ └── Jour de la semaine (0-7, 0 et 7 représentent tous deux dimanche)
│ │ │ └──── Mois (1-12)
│ │ └────── Jour du mois (1-31)
│ └──────── Heure (0-23)
└────────── Minute (0-59)
Remarques de référence :
- La norme POSIX[1] définit la spécification minimale de compatibilité et impose la prise en charge des symboles
*, , et -.
- Les implémentations
cron des systèmes Linux (comme Cronie) étendent les fonctionnalités avec les pas (/) et les chaînes spéciales (@daily, etc.), comme le détaille leur documentation officielle[3].
II. Règles des symboles dans les champs de temps
Chaque champ de temps prend en charge les symboles spéciaux suivants :
| Symbole |
Description |
Exemple |
* |
Correspond à n'importe quelle valeur |
* dans les minutes = chaque minute |
, |
Indique plusieurs valeurs |
1,3,5 = minutes 1, 3 et 5 |
- |
Définit une plage |
10-15 = minutes 10 à 15 |
/ |
Pas (intervalle) |
*/5 dans les minutes = toutes les 5 minutes |
? |
« Aucune valeur spécifique » (uniquement pour DOM/DOW) |
Utilisé pour éviter les conflits |
Les implémentations cron modernes (comme Vixie cron et ses dérivés) prennent en charge des règles de syntaxe plus riches. D'après la documentation de référence Cron d'IBM[4] et le wiki du projet Cronie[3], les symboles suivants sont largement pris en charge :
| Symbole |
Description |
Exemple de la documentation officielle |
L |
Dernier jour (pris en charge par certaines implémentations) |
0 0 L * * = exécution le dernier jour de chaque mois[5] |
W |
Jour ouvré le plus proche (par ex. 15W = jour ouvré le plus proche du 15) |
Voir la documentation Quartz Scheduler[6] (courant dans l'écosystème Java) |
III. Origine des alias prédéfinis (@daily, etc.)
@daily, @weekly et les alias similaires viennent de l'implémentation cron de Paul Vixie (Vixie cron, publiée en 1987)[7] et sont aujourd'hui des fonctionnalités par défaut des distributions Linux modernes (comme Debian ou Red Hat). D'après le manuel cron de Debian[8] :
# Equivalent to 0 0 * * *
@daily /path/to/script
IV. Différences courantes entre implémentations et points d'attention
Les différentes implémentations de cron présentent de subtiles variations : il faut se référer à leur documentation respective.
| Implémentation |
Caractéristiques |
Lien vers la ressource officielle |
| Cronie |
Cron par défaut de Red Hat, prend en charge les raccourcis @ |
Cronie GitHub |
| systemd |
Remplace cron par des unités .timer (recommandé pour les nouveaux systèmes) |
Manuel systemd.timer |
| fcron |
Prend en charge une syntaxe plus complexe (par ex. @yearly) |
Site fcron |
V. Outils de validation recommandés et références autorisées
-
Page de manuel Crontab
Exécutez man 5 crontab dans un terminal pour la syntaxe complète : la référence locale la plus directe et la plus fiable.
-
Générateurs d'expressions Cron
-
Documentation de projets open source
VI. Résumé
En combinant les normes POSIX, les pages de manuel Linux et la documentation des principales implémentations (comme Cronie), on peut comprendre précisément la logique des expressions cron. Pour les usages avancés (comme L et W), attention à la compatibilité des implémentations : privilégiez les ressources officielles.
Références