Informatique
Expressions cron expliquées
Colle la ligne de crontab sans la commande : obtiens la description en mots, le tableau des valeurs des minutes, heures, jours, mois et jours de la semaine, et les prochaines dates de lancement de la tâche.
Comment lire une ligne de crontab
Une expression cron a cinq champs : 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 sont dimanche). L'astérisque signifie « n'importe lequel », la virgule sépare des valeurs, le tiret indique un intervalle et la barre oblique un pas : */15 dans les minutes signifie 0, 15, 30 et 45.
Ainsi 0 9 * * 1-5 lance la tâche à 9 h du lundi au vendredi, 30 2 1 * * à 2 h 30 le premier de chaque mois, */10 * * * * toutes les dix minutes. Les macros sont des raccourcis : @daily équivaut à 0 0 * * *, @hourly à 0 * * * *, @weekly à 0 0 * * 0.
Une exception en surprend beaucoup : si le jour du mois et le jour de la semaine sont tous deux différents de *, cron exécute la tâche quand l'un des deux est vrai. 0 12 1 * 1 ne veut pas dire « le 1er du mois si c'est un lundi », mais « chaque 1er du mois et chaque lundi ».
Erreurs fréquentes
- Écrire * * * * * en pensant « une fois par jour » : cela signifie chaque minute.
- Oublier que cron utilise le fuseau horaire du serveur, pas celui du lecteur : ici, les prochaines exécutions sont dans le fuseau de ton navigateur.
- Attendre une tâche le 31 de chaque mois : dans les mois de 30 jours et en février, elle ne s'exécute tout simplement pas.
Questions fréquentes
Cron gère-t-il les secondes ?
Le cron classique non : la plus petite unité est la minute. Certains systèmes, comme Quartz ou Spring, ajoutent un sixième champ pour les secondes, avec une autre syntaxe.
Que se passe-t-il au changement d'heure ?
La nuit où l'on avance l'heure, une tâche à 2 h 30 peut être sautée ; quand on recule, elle peut s'exécuter deux fois. C'est pourquoi les tâches importantes se planifient hors de la tranche 2 h-3 h ou en UTC.
Puis-je utiliser les noms des jours et des mois ?
Oui : MON-FRI pour les jours et JAN-DEC pour les mois, en anglais et sans tenir compte de la casse.
Comment fonctionne ce calcul
Chaque champ est développé en l'ensemble de ses valeurs permises : * couvre tout l'intervalle, a-b un intervalle, x/n les valeurs à partir de x par pas de n, et les listes séparées par des virgules sont réunies. Dans le jour de la semaine, 7 devient 0 (dimanche). Un jour convient si son mois est permis et, quand les deux champs de jours sont restreints, si le jour du mois ou le jour de la semaine convient. Les prochaines exécutions sont cherchées jour par jour, jusqu'à huit ans, dans le fuseau du navigateur.
Calculs liés
Formateur et validateur JSON
Formate, minifie et valide du JSON : indentation, clés triées et position exacte des erreurs.
Testeur d'expressions régulières
Teste une regex sur un texte : correspondances surlignées, groupes de capture et remplacement, en JavaScript.
Convertisseur de timestamp Unix
Du timestamp Unix à la date et l'heure et retour : secondes, millisecondes, UTC et heure locale.