Expressions cron expliquées : 15 planifications réelles et pièges liés aux fuseaux horaires
La syntaxe cron tient sur une seule ligne, mais elle finit toujours par piéger quelqu’un, en général à 2 h du matin la nuit du changement d’heure. Voici le fonctionnement des cinq champs, une série de planifications à copier et les pièges à connaître.
Les cinq champs
┌──────── minute (0–59)
│ ┌────── hour (0–23)
│ │ ┌──── day of month (1–31)
│ │ │ ┌── month (1–12)
│ │ │ │ ┌ day of week (0–6, Sunday = 0)
* * * * *
Chaque champ accepte une valeur (5), une liste (1,15), un intervalle (1-5), un pas (*/10) ou * pour toutes les valeurs. Certains systèmes (Quartz, AWS EventBridge) ajoutent un champ pour les secondes ou pour l’année : vérifiez la variante que vous utilisez.
Planifications à copier
| Expression | Exécution |
|---|---|
*/5 * * * * | Toutes les 5 minutes |
0 * * * * | Toutes les heures, à l’heure pile |
15 */2 * * * | À la 15e minute, toutes les 2 heures |
0 9 * * * | Tous les jours à 09:00 |
30 2 * * * | Tous les jours à 02:30 (voir le piège de l’heure d’été ci-dessous) |
0 9 * * 1-5 | Du lundi au vendredi à 09:00 |
0 18 * * 5 | Les vendredis à 18:00 |
0 0 * * 0 | Les dimanches à minuit |
0 0 1 * * | Le premier jour de chaque mois |
0 0 1 1 * | Une fois par an, le 1er janvier |
0 8 1,15 * * | Le 1er et le 15 à 08:00 |
*/15 9-17 * * 1-5 | Toutes les 15 minutes pendant les heures de bureau |
0 0 * * 6,0 | Minuit le week-end |
0 3 * 1,4,7,10 * | Tous les jours à 03:00, le premier mois de chaque trimestre |
0 12 * * * | Tous les jours à midi |
Construisez ou traduisez n’importe quelle expression en langage courant avec le Générateur d’expressions cron, qui affiche aussi les prochaines exécutions.
Le piège jour du mois / jour de la semaine
Lorsque les champs jour du mois et jour de la semaine sont tous deux restreints, le cron standard s’exécute quand l’un ou l’autre correspond, et non les deux. 0 9 13 * 5 s’exécute le 13 de chaque mois et chaque vendredi, et pas seulement le vendredi 13. Pour exécuter le dernier jour ouvré ou le premier lundi, planifiez une exécution quotidienne et vérifiez la date dans votre script, ou utilisez un planificateur qui prend en charge des extensions comme L et #.
Fuseaux horaires et heure d’été
- Les serveurs et la CI fonctionnent en UTC. Les planifications de GitHub Actions, la plupart des conteneurs et des planificateurs cloud utilisent l’UTC. 09:00 à New York correspond à
0 14 * * *en hiver et à0 13 * * *en été. Effectuez la conversion avec le Convertisseur de fuseaux horaires, ou comparez plusieurs fuseaux à la fois sur l’Horloge mondiale. - Les tâches programmées entre 01:00 et 03:00 heure locale sont risquées. Au passage à l’heure d’été, 02:30 n’existe pas et la tâche peut être ignorée ; au passage à l’heure d’hiver, elle peut s’exécuter deux fois. Planifiez les tâches critiques en dehors de cette plage, ou faites fonctionner le planificateur en UTC.
- GitHub Actions peut démarrer les planifications avec plusieurs minutes de retard aux heures de forte charge, et elles sont désactivées sur les dépôts sans activité pendant 60 jours. Générez un workflow avec le Générateur GitHub Actions.