Analyseur d Expressions Cron
Analysez les expressions cron en texte lisible. Visualisez les prochaines executions et utilisez des exemples predefinis.
Fonctionnalites principales
- Explications cron en langage clair
- Aperçu des 5 prochaines exécutions
- Expressions prédéfinies courantes
- Décomposition visuelle des champs
Guide
Cron est un système de planification de tâches basé sur le temps, utilisé dans les systèmes d'exploitation de type Unix pour exécuter des commandes ou des scripts à intervalles déterminés. Une expression cron est une chaîne compacte qui définit une planification à l'aide de cinq champs : minute, heure, jour du mois, mois et jour de la semaine. Bien qu'il s'agisse de l'un des formats de planification les plus utilisés en informatique, les expressions cron sont notoirement difficiles à lire d'un seul coup. Ce guide couvre la syntaxe en détail, la lecture et l'écriture des expressions, les motifs courants et les cas d'usage pratiques. Les cinq champs d'une expression cron standard sont disposés de gauche à droite : minute (0-59), heure (0-23), jour du mois (1-31), mois (1-12) et jour de la semaine (0-7, où 0 et 7 représentent tous deux le dimanche). Chaque champ accepte des valeurs spécifiques, des plages, des listes et des caractères spéciaux. Une expression complète comme 30 14 * * 1-5 signifie à 14 h 30 tous les jours du lundi au vendredi. L'analyseur cron de WebRecast traduit ces expressions en langage clair et affiche les prochaines heures d'exécution planifiées. L'astérisque (*) est le caractère générique signifiant toutes les valeurs possibles. Dans le champ minute, * signifie chaque minute. Dans le champ mois, * signifie chaque mois. Lorsque les cinq champs sont des astérisques (* * * * *), la tâche s'exécute chaque minute de chaque heure de chaque jour. C'est l'expression cron la plus simple, mais aussi l'une des plus dangereuse en production si vous n'avez pas l'intention d'exécuter quelque chose aussi fréquemment. La barre oblique (/) indique des valeurs par pas. */5 dans le champ minute signifie toutes les 5 minutes (0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55). */2 dans le champ heure signifie toutes les 2 heures (0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22). Vous pouvez combiner les pas avec des plages : 1-30/5 dans le champ minute signifie toutes les 5 minutes pendant la première demi-heure (1, 6, 11, 16, 21, 26). Les pas facilitent la création d'intervalles réguliers sans avoir à lister chaque valeur. La virgule (,) crée une liste de valeurs spécifiques. 1,15 dans le champ jour du mois signifie le 1er et le 15 du mois. 0,30 dans le champ minute signifie en haut de l'heure et à 30 minutes passées. MON,WED,FRI dans le champ jour de la semaine (si votre implémentation cron prend en charge les noms) signifie lundi, mercredi et vendredi. Les listes sont utiles lorsque votre planification ne suit pas un intervalle régulier. Le tiret (-) définit une plage. 9-17 dans le champ heure signifie toutes les heures de 9 h à 17 h. 1-5 dans le champ jour de la semaine signifie du lundi au vendredi. Les plages sont inclusives, c'est-à-dire que les deux extrémités sont comprises. Vous pouvez combiner les plages avec des pas : 0-23/2 signifie toutes les deux heures tout au long de la journée, et 1-5 dans le champ jour de la semaine avec */10 dans le champ minute signifie toutes les 10 minutes en semaine. Certaines implémentations cron prennent en charge des caractères supplémentaires. Le point d'interrogation (?) est utilisé dans certains systèmes (comme le planificateur Quartz) pour indiquer l'absence de valeur spécifique pour le jour du mois ou le jour de la semaine lorsque vous souhaitez en spécifier un mais pas l'autre. Le caractère L signifie dernier (L dans le champ jour du mois signifie le dernier jour du mois). Le caractère W signifie le jour de semaine le plus proche (15W signifie le jour de semaine le plus proche du 15). Le caractère dièse (#) indique la n-ième occurrence d'un jour de la semaine (2#3 signifie le troisième mardi du mois). Le cron Unix standard ne prend pas en charge ces caractères, mais on les trouve dans les planificateurs basés sur Java et les services cron des plateformes cloud. Les motifs cron courants couvrent la plupart des besoins de planification. Exécuter chaque minute : * * * * *. Exécuter toutes les 5 minutes : */5 * * * *. Exécuter chaque heure à la minute 0 : 0 * * * *. Exécuter chaque jour à minuit : 0 0 * * *. Exécuter chaque jour à 3 h 30 : 30 3 * * *. Exécuter chaque semaine le dimanche à minuit : 0 0 * * 0. Exécuter chaque mois le 1er à minuit : 0 0 1 * *. Exécuter en semaine à 9 h : 0 9 * * 1-5. Exécuter toutes les 15 minutes pendant les heures d'ouverture en semaine : */15 9-17 * * 1-5. L'outil d'analyse cron inclut ces préréglages courants pour référence rapide. La gestion du fuseau horaire est une considération essentielle que l'expression cron elle-même n'aborde pas. Une expression cron spécifie une heure, mais dans quel fuseau horaire ? Sur un serveur local, cron s'exécute généralement dans le fuseau horaire système du serveur. Les plateformes cloud (AWS CloudWatch, Google Cloud Scheduler, Azure Logic Apps) vous permettent de définir explicitement le fuseau horaire. Lorsque vous planifiez des tâches destinées à une audience mondiale ou exécutées sur une infrastructure cloud, vérifiez et documentez toujours le fuseau horaire auquel vos expressions cron se rapportent. Une tâche planifiée à 0 9 * * * signifie 9 h dans le fuseau horaire du serveur, qui peut être UTC, votre heure locale ou toute autre valeur. Le passage à l'heure d'été crée des cas particuliers pour les planifications cron. Lorsque les horloges avancent, l'heure de 2 h 00 à 3 h 00 n'existe pas. Une tâche planifiée à 2 h 30 pendant la transition de printemps peut être ignorée ou exécutée à 3 h 00 selon l'implémentation cron. Lorsque les horloges reculent, l'heure de 1 h 00 à 2 h 00 se produit deux fois. Une tâche planifiée pendant cette période peut s'exécuter deux fois ou une fois selon l'implémentation. Utiliser UTC pour les planifications cron évite entièrement les problèmes liés à l'heure d'été, c'est pourquoi de nombreux systèmes de production se standardisent sur UTC. Les exécutions simultanées se produisent lorsqu'une tâche met plus de temps à se terminer que l'intervalle entre les exécutions planifiées. Si une tâche est planifiée toutes les 5 minutes mais prend parfois 8 minutes, l'exécution suivante démarre avant la fin de la précédente. Cela peut entraîner une contention des ressources, une corruption des données ou un traitement en double. Le système cron lui-même n'empêche pas les exécutions simultanées. Les solutions incluent l'utilisation de fichiers de verrouillage (la tâche vérifie la présence d'un fichier de verrouillage au démarrage et se termine s'il existe), l'utilisation de flock (un utilitaire de verrouillage de fichiers) ou l'utilisation d'un planificateur de tâches avec contrôle de concurrence intégré. La journalisation et la surveillance des tâches cron sont essentielles pour la fiabilité en production. Une tâche cron qui échoue silencieusement est pire qu'une tâche qui ne s'est jamais exécutée. Redirigez la sortie de la tâche vers des fichiers journaux en ajoutant >> /var/log/myjob.log 2>&1 à la commande cron. Cela capture à la fois la sortie standard et les erreurs. Configurez une surveillance pour être alerté lorsqu'une tâche échoue ou ne s'exécute pas selon la planification. Des services comme Healthchecks.io et Cronitor fournissent une surveillance de type interrupteur de sécurité (dead man's switch) où votre tâche cron envoie une requête à une URL à la fin, et vous êtes alerté si la requête n'arrive pas à temps. Les différences d'environnement entre votre shell interactif et l'environnement cron provoquent de nombreuses défaillances de tâches cron. Lorsque cron exécute une tâche, il utilise un environnement minimal qui peut ne pas contenir les entrées PATH, les variables d'environnement et la configuration du shell de votre session interactive. Si une tâche fonctionne lorsque vous l'exécutez manuellement mais échoue dans cron, la cause probable est une variable d'environnement manquante ou un exécutable introuvable car absent du PATH de cron. Les solutions incluent l'utilisation de chemins absolus pour tous les exécutables (/usr/bin/python3 au lieu de python3), la définition explicite des variables d'environnement en haut du crontab, ou le sourcing de votre profil shell au début du script de tâche. La commande crontab gère votre planification cron. crontab -e ouvre votre fichier crontab dans un éditeur. crontab -l liste vos entrées crontab actuelles. crontab -r supprime tout votre crontab (à utiliser avec précaution). Chaque ligne du fichier crontab est soit un commentaire (commençant par #), une affectation de variable d'environnement (MAILTO=admin@example.com), soit une entrée de planification (les cinq champs temporels suivis de la commande à exécuter). La variable MAILTO envoie la sortie de la tâche à une adresse e-mail, ce qui constitue un mécanisme de surveillance utile pour les petites configurations. Le cron à l'échelle du système est géré via des fichiers situés dans /etc/cron.d/, /etc/cron.daily/, /etc/cron.hourly/, /etc/cron.weekly/ et /etc/cron.monthly/. Ces répertoires utilisent un format légèrement différent qui inclut un champ de nom d'utilisateur entre la planification et la commande, spécifiant quel compte utilisateur exécute la tâche. Les paquets système et les scripts d'administration de serveur utilisent généralement ces emplacements plutôt que les crontabs des utilisateurs individuels. Les alternatives modernes à cron incluent les minuteurs systemd sur les systèmes Linux, qui offrent des fonctionnalités comme les délais aléatoires, la gestion des dépendances et une meilleure intégration de la journalisation. Les plateformes cloud proposent leurs propres services de planification : AWS EventBridge (anciennement CloudWatch Events), Google Cloud Scheduler, Azure Logic Apps et Kubernetes CronJobs. Ces services utilisent la syntaxe des expressions cron mais ajoutent des fonctionnalités comme les politiques de nouvelle tentative, les files d'attente de lettres mortes et les tableaux de bord de surveillance. Comprendre la syntaxe des expressions cron reste essentiel car tous ces outils modernes utilisent le même format à cinq champs. Les Kubernetes CronJobs méritent une mention spéciale car ils combinent la planification cron avec l'orchestration de conteneurs. Un Kubernetes CronJob crée un nouveau pod selon la planification, exécute la tâche dans un conteneur et nettoie une fois la tâche terminée. Le champ schedule utilise la syntaxe cron standard. Une configuration supplémentaire contrôle la politique de concurrence (Allow, Forbid ou Replace), les limites d'historique des tâches réussies et échouées, les secondes de délai de démarrage et la fonctionnalité de suspension. Si vous exécutez des charges de travail sur Kubernetes, les CronJobs sont le moyen standard de planifier des tâches récurrentes. L'analyseur cron de WebRecast prend votre expression et produit trois choses : une explication lisible de la planification (en langage clair comme toutes les 15 minutes en semaine), une décomposition de chaque champ montrant les valeurs qu'il correspond, et les 5 prochaines heures d'exécution planifiées basées sur la date et l'heure actuelles. Cela permet de vérifier facilement que votre expression fait ce que vous souhaitez avant de la déployer en production. Saisissez votre expression, lisez l'explication, vérifiez les prochaines heures d'exécution et confirmez que la planification correspond à vos besoins. Tester les expressions cron avant le déploiement évite des erreurs de planification qui peuvent avoir des conséquences réelles. Une tâche de sauvegarde qui s'exécute toutes les heures au lieu de chaque jour gaspille de l'espace disque. Une tâche de facturation qui s'exécute chaque jour au lieu de chaque mois surfacture les clients. Une tâche de nettoyage qui s'exécute chaque minute au lieu de chaque heure crée une charge serveur inutile. Analysez et vérifiez toujours votre expression cron à l'aide d'un outil comme celui-ci avant de l'ajouter à votre crontab ou à votre configuration de planificateur cloud. Les quelques secondes de vérification peuvent éviter des heures de débogage, voire pire.
Questions frequentes
Qu'est-ce qu'une expression cron ?
Une expression cron est une chaîne de 5 champs (minute, heure, jour, mois, jour de semaine) qui définit un planning pour des tâches récurrentes.
Que signifie */5 dans cron ?
La syntaxe */5 signifie « tous les 5 intervalles ». Par exemple, */5 dans le champ des minutes signifie toutes les 5 minutes.
