Cron Unix vs Spring et Quartz

Comparez le format Unix à cinq champs aux expressions Spring et Quartz à six ou sept champs, avec les erreurs de conversion fréquentes.

Différences de format

SystèmeChampsTous les jours à 02:00
Cron Unix50 2 * * *
Spring Cron60 0 2 * * *
Quartz Cron6 ou 70 0 2 * * ?

Unix commence par les minutes. Spring et Quartz commencent par les secondes. Quartz accepte aussi des modificateurs comme ?, L, W et #.

Ne vous contentez pas d'ajouter 0. Vérifiez la numérotation du dimanche, les règles des champs de jour et les modificateurs pris en charge.

Exemples de conversion

ObjectifUnix ou KubernetesSpringQuartz
Chaque minute* * * * *0 * * * * *0 * * * * ?
Chaque jour à 02:000 2 * * *0 0 2 * * *0 0 2 * * ?
En semaine à 09:000 9 * * 1-50 0 9 * * MON-FRI0 0 9 ? * MON-FRI

Ces exemples montrent la position des champs, mais la syntaxe exacte dépend toujours de l'implémentation et de sa version. Quartz emploie ? pour ne pas imposer de valeur dans l'un des deux champs de jour.

Caractères propres à Quartz

  • ? laisse le jour du mois ou le jour de la semaine indéterminé.
  • L représente le dernier jour selon le champ utilisé.
  • W choisit le jour ouvré le plus proche.
  • # désigne une occurrence, par exemple le deuxième lundi du mois.

Ces caractères ne sont pas portables vers une crontab Linux classique ou un CronJob Kubernetes.

Liste de contrôle pour une migration

Identifiez d'abord le planificateur. Comptez les champs, confirmez la présence des secondes et de l'année, contrôlez la numérotation des jours et vérifiez le fuseau horaire. Prévisualisez plusieurs exécutions, notamment aux changements de mois, et conservez l'expression d'origine à côté de la version convertie pendant la revue.

Créez un planning avec le générateur Cron, puis vérifiez la documentation du planificateur cible.