Vous configurez un serveur, un pipeline CI/CD ou un système de sauvegarde automatique, et on vous demande une « expression cron ». Vous tombez sur quelque chose comme 0 5 * * 1 et c'est aussi lisible qu'un mot de passe aléatoire. Pourtant, une fois la logique comprise, les expressions cron deviennent un outil remarquablement simple et puissant.
Qu'est-ce que cron ?
Cron est un planificateur de tâches créé pour Unix en 1975. Son nom vient du grec « chronos » (temps). Il permet de déclencher automatiquement une commande ou un script à des moments précis : chaque minute, chaque jour à 5h du matin, le premier lundi de chaque mois, etc.
Aujourd'hui, la syntaxe cron dépasse largement le monde Unix. On la retrouve dans :
- Les serveurs web (tâches planifiées)
- Les pipelines CI/CD (GitHub Actions, GitLab CI, Jenkins)
- Les services cloud (AWS CloudWatch, Google Cloud Scheduler)
- Les CMS (WordPress, Drupal)
- Les bases de données (sauvegardes automatiques)
- Les applications mobiles et IoT
Les 5 champs d'une expression cron
Une expression cron standard comporte 5 champs, séparés par des espaces :
┌───────────── minute (0-59)
│ ┌───────────── heure (0-23)
│ │ ┌───────────── jour du mois (1-31)
│ │ │ ┌───────────── mois (1-12)
│ │ │ │ ┌───────────── jour de la semaine (0-7, 0 et 7 = dimanche)
│ │ │ │ │
* * * * *
Le caractère * signifie « toutes les valeurs possibles ». Ainsi, * * * * * signifie « chaque minute de chaque heure de chaque jour de chaque mois, quel que soit le jour de la semaine » — autrement dit, toutes les minutes.
Le saviez-vous ? Certains systèmes ajoutent un sixième champ pour les secondes (en position 1) ou pour l'année (en position 6). Mais la norme standard reste à 5 champs. Vérifiez la documentation de votre outil.
Les caractères spéciaux
| Caractère | Signification | Exemple |
|---|---|---|
* |
Toutes les valeurs | * * * * * = chaque minute |
, |
Liste de valeurs | 1,15 = le 1er et le 15 |
- |
Plage de valeurs | 1-5 = de lundi à vendredi |
/ |
Intervalle | */15 = toutes les 15 unités |
Lire une expression cron : exemples pratiques
Les plus courantes
| Expression | Signification |
|---|---|
0 * * * * |
Chaque heure pile |
0 5 * * * |
Tous les jours à 5h00 |
0 0 * * * |
Tous les jours à minuit |
0 9 * * 1 |
Chaque lundi à 9h00 |
0 0 1 * * |
Le 1er de chaque mois à minuit |
*/15 * * * * |
Toutes les 15 minutes |
0 9-17 * * 1-5 |
Chaque heure de 9h à 17h, du lundi au vendredi |
Décortiquons un exemple
Prenons 30 6 * * 1-5 :
30→ à la minute 306→ de l'heure 6 (6h30)*→ quel que soit le jour du mois*→ quel que soit le mois1-5→ du lundi au vendredi
Résultat : tous les jours ouvrés à 6h30.
Écrire une expression cron : méthode pas à pas
- Identifiez la fréquence : « tous les jours à 3h du matin »
- Commencez par la minute : 0 (à l'heure pile)
- Continuez avec l'heure : 3
- Jour du mois : * (tous les jours)
- Mois : * (tous les mois)
- Jour de la semaine : * (tous les jours)
- Résultat :
0 3 * * *
Astuce Pour vérifier que votre expression fait bien ce que vous voulez, utilisez un outil de test qui affiche les prochaines exécutions. C'est plus fiable que de calculer mentalement, surtout pour les expressions complexes.
Les erreurs courantes
Confondre « toutes les 5 minutes » et « à la 5e minute »
5 * * * *= à la 5e minute de chaque heure (une fois par heure)*/5 * * * *= toutes les 5 minutes (12 fois par heure)
Oublier les fuseaux horaires
Les expressions cron ne contiennent aucune information de fuseau horaire. L'heure dépend de la configuration du serveur ou du service qui exécute la tâche. Un 0 9 * * * sur un serveur en UTC s'exécutera à 10h en heure française (hiver) ou 11h (été).
Attention Le changement d'heure été/hiver peut provoquer des comportements inattendus. Une tâche planifiée à 2h30 du matin pourrait s'exécuter deux fois (quand on recule d'une heure) ou pas du tout (quand on avance d'une heure). Planifiez vos tâches critiques à des heures qui ne sont pas affectées par le changement d'heure.
Le jour du mois ET le jour de la semaine
Quand les deux champs sont spécifiés (pas *), la plupart des implémentations les combinent avec un OU (pas un ET). 0 9 15 * 1 signifie « à 9h le 15 de chaque mois OU chaque lundi », pas « à 9h le 15 si c'est un lundi ».
Les expressions raccourcies
Certains systèmes acceptent des raccourcis lisibles :
| Raccourci | Équivalent | Signification |
|---|---|---|
@yearly |
0 0 1 1 * |
Le 1er janvier à minuit |
@monthly |
0 0 1 * * |
Le 1er de chaque mois |
@weekly |
0 0 * * 0 |
Chaque dimanche à minuit |
@daily |
0 0 * * * |
Chaque jour à minuit |
@hourly |
0 * * * * |
Chaque heure pile |
Tester vos expressions
Ne déployez jamais une expression cron sans l'avoir testée. Un outil de validation affiche les prochaines dates d'exécution et confirme que votre expression produit le résultat attendu.
Pour tester et comprendre vos expressions cron : Lire et tester des expressions cron.
En résumé
Les expressions cron suivent une logique simple : 5 champs (minute, heure, jour, mois, jour de semaine) qui définissent quand une tâche doit s'exécuter. Les caractères spéciaux (*, ,, -, /) permettent une flexibilité considérable.
La clé est de toujours vérifier vos expressions avec un outil de test avant de les mettre en production. Une erreur de champ peut transformer une tâche quotidienne en tâche minutaire — avec des conséquences parfois coûteuses.
Testez votre prochaine expression cron : outil de lecture d'expressions cron.