Qu'est-ce que Cron ?
Cron est le planificateur de tâches des systèmes Unix/Linux. Il permet d'exécuter des commandes ou scripts à des intervalles réguliers — toutes les minutes, toutes les heures, quotidiennement, hebdomadairement ou selon des plannings complexes. La syntaxe cron est devenue un standard universel utilisé bien au-delà de Linux : GitHub Actions, Kubernetes CronJobs, AWS CloudWatch, les CI/CD pipelines, et la plupart des frameworks web l'utilisent.
Les 5 champs expliqués
Chaque expression cron standard se compose de 5 champs séparés par des espaces :
- Minute (0-59) — à quelle minute de l'heure
- Heure (0-23) — à quelle heure du jour (format 24h)
- Jour du mois (1-31) — quel jour du mois
- Mois (1-12) — quel mois de l'année
- Jour de la semaine (0-7) — quel jour de la semaine (0 et 7 = dimanche)
Utilisation dans les systèmes modernes
crontab (Linux)
La commande classique. crontab -e pour éditer, crontab -l pour lister. Chaque ligne suit le format : expression + commande. Les logs sont dans /var/log/syslog.
GitHub Actions
Utilisez schedule avec une expression cron pour déclencher des workflows automatiquement. Attention : les exécutions peuvent être retardées en période de forte charge.
Kubernetes CronJob
Les CronJobs K8s créent des Jobs selon un planning cron. Parfait pour les backups, nettoyages de données, rapports périodiques dans les clusters.
CI/CD Pipelines
GitLab CI, Jenkins, CircleCI — tous supportent le déclenchement par expression cron pour les builds nocturnes, tests de régression et déploiements planifiés.
Bonnes pratiques
- Évitez les exécutions trop fréquentes :
* * * * * (chaque minute) peut surcharger votre système. Commencez large et réduisez l'intervalle si nécessaire.
- Décalez les heures d'exécution : ne planifiez pas tout à minuit pile (
0 0 * * *). Utilisez des minutes décalées (17 3 * * *) pour répartir la charge.
- Gérez les fuseaux horaires : crontab utilise le fuseau horaire du système. GitHub Actions utilise UTC. Documentez toujours le fuseau horaire utilisé.
- Capturez les erreurs : redirigez stdout et stderr vers un fichier log. Exemple :
0 2 * * * /script.sh >> /var/log/cron.log 2>&1
- Testez avant de déployer : utilisez ce générateur pour vérifier que votre expression fait bien ce que vous attendez.