Aller au contenu principal

Outils gratuits

Expression cron expliquée

Quand cette tâche cron s'exécute-t-elle ? Collez l'expression. Elle est lue dans votre navigateur, rien n'est envoyé.

Les cinq champs

Une expression cron a cinq champs séparés par des espaces : minute (0-59), heure (0-23), jour du mois (1-31), mois (1-12 ou JAN-DEC) et jour de la semaine (0-7 ou SUN-SAT, 0 et 7 sont tous deux le dimanche).

Dans chaque champ, * veut dire toutes les valeurs, 1-5 un intervalle, 1,15 une liste et */10 un pas : une valeur sur 10. Ainsi */15 9-17 * * 1-5 s'exécute toutes les 15 minutes de 9:00 à 17:45, du lundi au vendredi.

Les alias sont des raccourcis : @hourly, @daily (ou @midnight), @weekly, @monthly et @yearly (ou @annually). @reboot s'exécute une fois au démarrage de la machine.

Quelques classiques : 0 * * * * tourne au début de chaque heure, 30 2 * * * à 2:30 chaque nuit, 0 0 * * 0 à minuit chaque dimanche, et 0 8 1 * * à 8:00 le premier jour de chaque mois.

Pourquoi une tâche cron ne s'est pas exécutée

  • Le jour du mois et le jour de la semaine sont tous les deux renseignés. Cron lance la tâche quand L'UN OU L'AUTRE correspond, pas les deux : 0 0 13 * 5 tourne chaque 13 du mois et chaque vendredi.
  • Le fuseau horaire. Le serveur exécute cron dans son propre fuseau, souvent UTC, pas le vôtre. Les CronJobs Kubernetes utilisent celui du contrôleur sauf si vous définissez timeZone.
  • L'environnement. Cron lance les tâches avec un PATH minimal et sans profil shell : un script qui marche dans votre terminal échoue là.
  • Elle a tourné, a échoué, et personne ne l'a vu : cron envoie la sortie dans une boîte mail locale que personne ne lit.

Questions

Les secondes sont-elles gérées ?

Non. Le cron standard a cinq champs et une résolution d'une minute. Les expressions à six champs avec les secondes sont une extension de Quartz et Spring.

Dans quel fuseau horaire sont les prochaines exécutions ?

Le vôtre, celui de votre navigateur. Convertissez-les si votre serveur tourne en UTC.

Comment savoir quand une tâche cron ne tourne plus ?

Utilisez un check heartbeat. La tâche appelle une URL SolidPing à chaque fin d'exécution ; si l'appel n'arrive pas à temps, vous recevez une alerte.

Voir aussi