Cron · Syntaxe · *, /, -, , · Raccourcis
Caractères spéciaux cron
Mise à jour : mai 2026
La puissance de cron vient de quelques symboles simples. Ils permettent de passer d'une heure fixe à une liste, une plage ou un intervalle régulier.
Validation et explication champ par champ
Les symboles standards
| Symbole | Rôle | Exemple |
|---|---|---|
* | Toutes les valeurs | * * * * * |
, | Liste | 0 9,17 * * * |
- | Plage | 0 9-17 * * * |
/ | Pas | */15 * * * * |
Raccourcis pratiques
@hourly: chaque heure, équivalent à0 * * * *.@dailyou@midnight: chaque jour à minuit.@weekly: chaque semaine, souvent dimanche à minuit.@monthly: le 1er du mois à minuit.
Quartz et extensions
Certains ordonnanceurs supportent aussi L, W ou # pour "dernier jour", "jour ouvré proche" ou "nième jour de semaine". Ces extensions ne sont pas portables en crontab Unix classique.
Astérisque : toutes les valeurs, pas "n'importe quand"
L'astérisque * signifie que le champ ne limite pas l'exécution. Dans le champ minute, * veut dire chaque minute. Dans le champ heure, il veut dire chaque heure. Dans le champ jour de semaine, il veut dire tous les jours de semaine. Le sens exact dépend donc de la position. * * * * * lance chaque minute parce que les cinq champs sont ouverts.
Cette distinction aide à lire des expressions comme 0 9 * * *. La minute est fixée à 0, l'heure est fixée à 9, et les trois derniers champs sont ouverts. Le résultat est une exécution chaque jour à 09:00. L'astérisque ne rend pas la tâche aléatoire ; il enlève simplement la contrainte du champ où il apparaît.
Slash : intervalle à l'intérieur d'un champ
Le slash / définit un pas. Dans */5, cron parcourt toutes les valeurs possibles du champ, puis garde une valeur toutes les cinq unités. Dans le champ minute, cela donne 0, 5, 10, 15, jusqu'à 55. Dans le champ heure, */6 donne 0, 6, 12 et 18. Le même symbole peut donc exprimer des minutes, des heures ou des jours selon sa position.
On peut aussi combiner plage et pas. 10-50/10 dans les minutes donne 10, 20, 30, 40 et 50. 9-17/2 dans les heures donne 9, 11, 13, 15 et 17. Cette syntaxe est puissante, mais elle doit rester lisible. Si une liste explicite est plus claire pour l'équipe, utilisez la liste. Une crontab est un fichier d'exploitation, pas un concours de concision.
Virgule et tiret : listes et plages
La virgule , permet d'énumérer des valeurs précises. 0 9,17 * * * lance à 09:00 et 17:00. 0 9 * * 1,3,5 lance lundi, mercredi et vendredi. Le tiret - exprime une plage continue : 1-5 pour lundi à vendredi, 9-18 pour les heures 9 à 18.
Les deux formes peuvent parfois se combiner, par exemple 1-3,5. Mais toutes les implémentations historiques n'ont pas accepté toutes les combinaisons de la même manière. Pour une crontab Linux moderne, cela fonctionne généralement. Pour un outil cloud ou embarqué, vérifiez la documentation. Si la portabilité est importante, préférez des expressions simples et testez-les dans le générateur avant de les déployer.
Raccourcis @ : pratiques mais moins explicites
Les alias comme @hourly, @daily, @weekly et @monthly évitent d'écrire les cinq champs. Ils sont utiles pour des besoins standards, mais ils masquent l'heure exacte. @weekly ne veut pas dire "chaque lundi matin" ; il correspond souvent à dimanche à minuit. Si votre besoin SEO ou métier est "cron chaque semaine lundi", écrivez plutôt 0 9 * * 1.
Dans une équipe, les alias doivent être réservés aux tâches évidentes. Pour une sauvegarde mensuelle, @monthly peut être acceptable. Pour un rapport métier, l'expression complète est plus lisible. Elle permet aussi de modifier facilement l'heure sans changer de style. Le générateur accepte les principaux alias, mais affiche leur signification pour éviter les surprises.
Tester les caractères avant déploiement
Les caractères spéciaux sont courts, donc les erreurs sont parfois difficiles à voir. */5 * * * * et 0 */5 * * * ne diffèrent que par la position du slash, mais l'un lance toutes les cinq minutes et l'autre toutes les cinq heures. Même chose pour 1-5 : dans le champ jour de semaine, cela veut dire lundi-vendredi ; dans le champ jour du mois, cela veut dire du 1er au 5 du mois.
Avant de coller une ligne dans crontab -e, vérifiez la signification champ par champ et affichez les prochaines exécutions. Cette étape est rapide, mais elle évite des tâches lancées trop souvent, pas assez souvent ou au mauvais jour. Pour les jobs sensibles, gardez une expression simple et mettez les règles complexes dans le script.
Questions fréquentes
*/5 est-il une division ?
Non, c'est un pas sur les valeurs du champ. Dans les minutes, il parcourt 0, 5, 10, etc.
Peut-on combiner plage et pas ?
Oui : 9-17/2 signifie toutes les 2 valeurs entre 9 et 17.
@reboot est-il une date ?
Non. Il signifie une exécution au démarrage du système, selon le service cron utilisé.