SomeeLab.tools

Lecteur d’expressions cron

Décomposez une expression cron en ses cinq champs et voyez quand elle s’exécutera vraiment. Lit la syntaxe standard et les raccourcis @daily.

Minute
0
Heure
9
Jour du mois
Indifférent
Mois
Indifférent
Jour de la semaine
lun.-ven.

Ce que veulent dire les cinq champs

De gauche à droite : minute, heure, jour du mois, mois et jour de la semaine. Ainsi 0 9 * * 1 signifie minute 0, heure 9, aucune restriction sur la date ni sur le mois, et lundi — donc tous les lundis à neuf heures du matin.

L’astérisque indique que le champ n’est pas contraint. Laisser ouvert l’un des premiers champs fait tourner la tâche bien plus souvent que prévu : * * * * * se déclenche chaque minute. Un astérisque oublié dans le champ des minutes, ce sont 1440 exécutions par jour.

Lire les symboles

  • 1-5 est la suite des valeurs de 1 à 5.
  • 1,3,5 ne retient que ces trois valeurs.
  • */15 avance de quinze en quinze à partir de zéro. Dans le champ des minutes, cela donne 0, 15, 30 et 45.
  • 9-17/2 ne saute qu’à l’intérieur de l’intervalle.
  • Les jours et les mois acceptent des noms : MON-FRI, JAN,JUL.

Dans le champ du jour de la semaine, 0 est le dimanche et 6 le samedi. La plupart des implémentations acceptent aussi 7 pour le dimanche, si bien que 0 et 7 désignent le même jour.

Quand jour du mois et jour de la semaine sont tous deux renseignés

C’est là que la plupart des gens se trompent. Lorsque le troisième champ et le cinquième sont l’un et l’autre contraints, cron s’exécute les jours qui satisfont l’une ou l’autre condition, et non ceux qui satisfont les deux.

0 0 1 * MON ne veut pas dire « le premier du mois lorsqu’il tombe un lundi ». Cela veut dire le premier du mois ou chaque lundi, soit environ cinq fois par mois. Contraignez un seul des deux champs et laissez l’autre en astérisque pour éviter le piège.

Vérifiez d’abord le fuseau horaire

Les heures affichées ici suivent le fuseau de l’appareil depuis lequel vous consultez la page. Le cron d’un serveur suit le fuseau de ce serveur : confirmez lequel avant de déployer. Les serveurs réglés sur UTC sont fréquents, et une tâche prévue pour neuf heures du matin finit par tourner en milieu d’après-midi.

Là où l’heure d’été s’applique, une tâche placée dans la plage décalée peut être sautée ou exécutée deux fois le jour du changement. L’éloigner de la tranche de deux heures du matin règle la question.

Six champs, c’est un autre dialecte

Certaines expressions comportent un champ de secondes en tête, ce qui en fait six. C’est la convention de Spring et de Quartz, et ce n’est pas ce que lit un crontab standard. Cet outil ne lit que cinq champs.

Coller une expression à six champs dans un crontab décale tout d’une position : la valeur des secondes est lue comme des minutes, et celle des minutes comme des heures. Déterminez quelle syntaxe attend la destination avant de recopier quoi que ce soit.