Analyseur d'expressions Cron

Les expressions cron définissent des planifications pour les tâches récurrentes dans les systèmes de type Unix. Cet outil analyse la syntaxe cron (5 à 7 champs), explique chaque champ en langage courant, calcule les prochaines exécutions planifiées et avertit des erreurs courantes. Prend en charge le format crontab utilisateur et le format crontab système avec les champs utilisateur et commande.

Specifications

Cas d'utilisation courants

  • Déboguer pourquoi une tâche cron ne s'exécute pas aux heures prévues
  • Comprendre les expressions cron héritées dans la configuration
  • Planifier les sauvegardes et les calendriers de maintenance
  • Vérifier les planifications de pipelines CI/CD (GitHub Actions, GitLab CI)
  • Tester les planifications Kubernetes CronJob avant le déploiement
  • Analyser les entrées du crontab système depuis /etc/crontab ou /etc/cron.d/

Fonctionnalites

  • Analyser les expressions cron à 5 champs (standard), 6 champs (avec secondes) et 7 champs (avec secondes et année)
  • Prise en charge du format crontab système avec champ utilisateur (ex. : "0 5 * * * root /path/to/script")
  • Extraire et afficher la commande des lignes cron
  • Expliquer chaque champ dans un langage lisible
  • Calculer les 10 prochaines exécutions planifiées
  • Prise en charge des plages (1-5), listes (1,3,5), pas (*/15) et noms (MON, JAN)
  • Avertir des problèmes courants comme la spécification du jour 31 dans une planification

Exemples

Chaque jour de semaine à 9h

Essayer →

S'exécute à 9h00 du lundi au vendredi.

0 9 * * 1-5

Toutes les 15 minutes

Essayer →

S'exécute aux minutes 0, 15, 30 et 45 de chaque heure.

*/15 * * * *

Crontab système avec utilisateur et commande

Essayer →

Sauvegarde quotidienne à 5h du matin exécutée en tant que root (format crontab système depuis /etc/crontab).

0 5 * * * root /usr/bin/backup.sh

Cron avec commande (crontab utilisateur)

Essayer →

Vérification de santé toutes les 5 minutes (format crontab utilisateur).

*/5 * * * * curl -s http://localhost/health

Mensuel le premier

Essayer →

S'exécute à minuit le premier jour de chaque mois.

0 0 1 * *

Conseils

  • Les cinq champs sont : minute (0-59), heure (0-23), jour du mois (1-31), mois (1-12), jour de la semaine (0-6, dimanche=0).
  • Le crontab système (/etc/crontab, /etc/cron.d/*) a un 6e champ pour le nom d'utilisateur avant la commande.
  • Les crontabs utilisateur (crontab -e) n'ont pas de champ nom d'utilisateur ; elles s'exécutent en tant que propriétaire du crontab.
  • Utilisez * pour "chaque" et */n pour "tous les n".
  • Les noms de jours (SUN-SAT) et noms de mois (JAN-DEC) sont insensibles à la casse.
  • Soyez prudent avec jour-du-mois et jour-de-la-semaine ensemble ; le comportement varie selon les implémentations.

Comprendre Analyseur d'expressions Cron

Cron est le planificateur de tâches basé sur le temps dans les systèmes d'exploitation de type Unix, et les expressions cron sont la syntaxe compacte pour définir quand une tâche s'exécute. Le format standard à cinq champs spécifie la minute (0-59), l'heure (0-23), le jour du mois (1-31), le mois (1-12) et le jour de la semaine (0-6, où 0 est dimanche). Un astérisque (*) correspond à toutes les valeurs, faisant de "* * * * *" une exécution chaque minute.

Au-delà des valeurs simples, cron prend en charge plusieurs opérateurs. Les plages (1-5) correspondent à un intervalle continu. Les listes (1,3,5) correspondent à des valeurs discrètes. Les valeurs de pas (*/15) créent des intervalles réguliers. Ceux-ci se combinent : 1-5/2 dans le jour-de-la-semaine signifie lundi, mercredi, vendredi. Les champs mois et jour-de-la-semaine acceptent des noms à trois lettres (JAN-DEC, SUN-SAT).

Les implémentations de cron varient. Les crontabs utilisateur ont cinq champs plus la commande. Les crontabs système ajoutent un champ nom d'utilisateur. Certaines implémentations prennent en charge un sixième champ pour les secondes (Spring, Quartz, Kubernetes) et un septième pour l'année. AWS EventBridge, GitHub Actions et d'autres planificateurs cloud ont chacun leurs propres variations.

Les pièges courants incluent l'interaction entre les champs jour-du-mois et jour-de-la-semaine : si les deux sont spécifiés (pas *), la tâche s'exécute quand l'une ou l'autre condition est vraie (logique OU). La gestion des fuseaux horaires est un autre problème — les tâches cron s'exécutent dans le fuseau horaire du système sauf si CRON_TZ est défini, et les transitions d'heure d'été peuvent faire sauter des tâches ou les exécuter deux fois.

L'opérateur / crée des valeurs de pas. */5 dans le champ minute signifie "toutes les 5 minutes" et produit des exécutions aux minutes 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50 et 55. Les plages peuvent être combinées avec des pas : 10-30/5 signifie toutes les 5 minutes entre la minute 10 et la minute 30. Pour exécuter une tâche à une heure précise certains jours, définissez les champs minute et heure à l'heure souhaitée et le champ jour-de-la-semaine aux jours cibles. Par exemple, "30 14 * * 1-5" s'exécute à 14h30 du lundi au vendredi, et "0 9 * * 0" s'exécute à 9h chaque dimanche. Toutes les heures sont interprétées dans le fuseau horaire local du serveur sauf si CRON_TZ est explicitement configuré.

Cron utilise l'heure murale, ce qui signifie que les transitions d'heure d'été peuvent provoquer un comportement inattendu. Lorsque les horloges avancent au printemps, les tâches planifiées entre 2h00 et 2h59 du matin peuvent être entièrement ignorées. Lorsque les horloges reculent, les tâches dans cette plage peuvent s'exécuter deux fois. Pour les tâches critiques, définir CRON_TZ=UTC évite ces problèmes. Alternativement, évitez de planifier des tâches pendant la fenêtre de transition, ou concevez des tâches idempotentes pour que les exécutions en double soient sans conséquence.

La syntaxe cron a été adoptée bien au-delà des systèmes Unix. Kubernetes CronJobs, GitHub Actions, GitLab CI, AWS EventBridge, Google Cloud Scheduler, Spring @Scheduled et de nombreuses bibliothèques de files de tâches utilisent toutes les expressions cron pour la planification. Cependant, chaque implémentation peut prendre en charge des fonctionnalités différentes — certaines ajoutent un champ secondes, certaines ajoutent un champ année, et certaines utilisent ? pour signifier "aucune valeur spécifique" dans les champs jour-du-mois ou jour-de-la-semaine.

← Retour a tous les outils