Cron expression generator : comprendre et créer des expressions cron
Qu'est-ce qu'une expression cron ?
Une expression cron est une chaîne de texte composée de 5 champs séparés par des espaces, qui définit une planification récurrente sur les systèmes Unix/Linux. Elle est utilisée par le démon cron (décrit dans la page de manuel crontab(5)) pour automatiser l'exécution de commandes et de scripts à des intervalles réguliers.
Le format standard POSIX comprend 5 champs : minute (0-59), heure (0-23), jour du mois (1-31), mois (1-12) et jour de la semaine (0-6, où 0 = dimanche). Certaines implémentations étendues ajoutent un sixième champ pour les secondes (0-59).
minute heure jour_mois mois jour_semaine → */5 * * * * (toutes les 5 minutes)
Syntaxe des expressions cron
Chaque champ accepte plusieurs types de valeurs :
Opérateurs cron
* Wildcard : toutes les valeurs possibles
* * * * * = chaque minute
*/n Intervalle : toutes les n unités
*/15 * * * * = toutes les 15 min
x-y Plage : de x à y inclus
0 8-18 * * * = de 8h à 18h
x,y,z Liste : valeurs spécifiques
0 9,12,18 * * * = à 9h, 12h, 18h
Source : spécification POSIX IEEE Std 1003.1, crontab(5)
5 champs
composent une expression cron standard POSIX (minute, heure, jour du mois, mois, jour de la semaine)
Expressions cron courantes
Voici les expressions les plus fréquemment utilisées dans les tâches d'administration système et les pipelines CI/CD :
0 0 * * *Backups quotidiens, nettoyage de logs
*/5 * * * *Monitoring, health checks
0 9 * * 1Rapports hebdomadaires
0 8 1 * *Facturation, rapports mensuels
0 3 * * 0Maintenance, mises à jour
Cron POSIX vs extensions modernes
Cron POSIX
5 champs
Standard, compatible partout
Cron étendu
6+ champs
Secondes, @yearly, L, W, #
Le cron POSIX standard utilise 5 champs et est supporté par tous les systèmes Unix/Linux. Les implémentations étendues comme Quartz Scheduler (Java), Spring Cron ou node-cron ajoutent des fonctionnalités : un champ pour les secondes, les raccourcis @yearly, @monthly, @weekly, @daily, @hourly, et des caractères spéciaux comme L (dernier jour), W (jour ouvré le plus proche) et # (nième jour de la semaine).
Conseil
Erreurs fréquentes à éviter
- Confondre le jour de la semaine 0 et 7. En POSIX, 0 = dimanche. Certaines implémentations acceptent 7 comme dimanche. Utilisez 0 pour la compatibilité maximale.
- Oublier le fuseau horaire. Le démon cron utilise le fuseau horaire du système. Si votre serveur est en UTC et vous êtes en CET, ajustez vos heures en conséquence.
- Définir jour du mois ET jour de la semaine. En cron POSIX, si les deux champs sont définis (pas
*), la tâche s'exécute si l'une OU l'autre condition est remplie (OR logique, pas AND). - Tâches trop fréquentes. Une expression
* * * * *(chaque minute) peut surcharger un système si le script est lourd. Utilisez des intervalles raisonnables. - Ne pas rediriger la sortie. Par défaut, cron envoie un email pour chaque exécution avec sortie. Redirigez vers un fichier de log ou
/dev/nullpour les tâches silencieuses.
Sources et références
- IEEE Std 1003.1 (POSIX) - crontab : spécification officielle.
- crontab(5) - Linux man page : documentation Linux.
- MDN Web Docs : pour les alternatives côté client.
- GitHub Actions - schedule : syntaxe cron dans les workflows CI/CD.