Toolyard

Qu’est-ce qu’une expression cron ?

Les cinq champs

Une expression cron est faite de cinq champs séparés par des espaces, qui indiquent à un planificateur quand exécuter une tâche. Dans l’ordre, de gauche à droite :

Minute0-59
Heure0-23
Jour du mois1-31
Mois1-12
Jour de la semaine0-6 (dimanche = 0)

La tâche s’exécute quand l’heure actuelle correspond à chaque champ.

Les caractères spéciaux

  • * n’importe quelle valeur.
  • , une liste : 1,15 signifie le 1er et le 15.
  • - un intervalle : 1-5 dans le dernier champ signifie du lundi au vendredi.
  • / un pas : */10 dans le champ des minutes signifie toutes les 10 minutes.

Les planifications courantes

*/5 * * * *Toutes les 5 minutes
0 * * * *Toutes les heures pile
0 0 * * *Tous les jours à minuit
30 8 * * 1-5Les jours de semaine à 08:30
0 0 1 * *À minuit le 1er de chaque mois
0 3 * * 0Tous les dimanches à 03:00

Collez n’importe quelle expression dans Expliquer une expression cron pour la lire en mots et voir ses prochaines exécutions.

Les pièges classiques

  • Le fuseau horaire : cron utilise l’horloge du serveur, souvent réglée sur UTC.
  • Jour du mois et jour de la semaine ensemble : quand les deux sont définis, la tâche s’exécute quand l’un des deux correspond, pas les deux.
  • Les secondes : le cron standard n’a pas de champ des secondes. Certains systèmes comme Quartz et Spring en ajoutent un au début, ce qui fait six champs.

Des expressions qui ne font pas ce qu’on croit

ExpressionIntentionExécution réelle
0 9 1-7 * 19 h le premier lundi9 h chacun des jours 1 à 7, et tous les lundis
*/15 9-17 * * 1-5Toutes les 15 minutes de 9 h à 17 hDe 9 h 00 à 17 h 45 en semaine, y compris l’heure de 17 h
0 0 31 * *Le dernier jour du moisSeulement les sept mois de 31 jours
0 0 29 2 *Une fois par anSeulement les années bissextiles

Pour le premier lundi, lancez la tâche les jours 1 à 7 et vérifiez le jour de la semaine dans le script.

Les raccourcis

Beaucoup de versions de cron acceptent des alias : @hourly, @daily, @weekly, @monthly, @yearly et @reboot, qui s’exécute une fois au démarrage de la machine.

Le changement d’heure

Sur un serveur à l’heure locale, une tâche prévue entre 1 h et 3 h peut être sautée la nuit du passage à l’heure d’été, ou s’exécuter deux fois au retour à l’heure d’hiver, selon la version de cron. Programmez les tâches importantes en dehors de ces heures, ou mettez le serveur en UTC.

Outils de ce guide

Autres guides