Prochaines exécutions
Les planificateurs diffèrent sur des détails comme jour du mois ou jour de semaine et l’heure d’été. Testez la planification dans votre système avant de l’utiliser en production.
0 9 * * 1-5 s’exécute à 09:00 du lundi au vendredi, cinq fois par semaine ; MON-FRI fonctionne aussi. Quartz demande les secondes et un ? : 0 0 9 ? * MON-FRI. Cron ignore les jours fériés : gérez-les dans la tâche elle-même si nécessaire.
Mode d’emploi
- Saisissez ou collez une expression cron, ou touchez un raccourci. Le format suit le nombre de champs : 5 pour la crontab Unix, 6 pour Spring (secondes en tête), 7 ou un ? pour Quartz.
- Lisez la description en clair et les 10 prochaines exécutions. Choisissez un fuseau pour voir l’heure de déclenchement ; touchez une heure pour la copier en ISO 8601.
- L’éditeur visuel modifie un champ à la fois : toutes les valeurs, un intervalle, des valeurs précises ou une plage.
- Passer d’Unix à Quartz ou Spring convertit l’expression quand c’est possible.
- En cron Unix, si le jour du mois et le jour de semaine sont tous deux restreints, la tâche s’exécute quand l’un des deux correspond (OU). Quartz exige ? dans l’un d’eux ; Spring exige que les deux correspondent.
- Sous Unix, les jours de semaine vont de 0 à 7 (0 et 7 = dimanche) ; Quartz utilise 1–7 avec 1 = dimanche. Les noms comme MON-FRI fonctionnent partout.
- Quartz et Spring acceptent aussi L (dernier jour), W (jour ouvré le plus proche), 5L (dernier vendredi) et 2#1 (premier lundi).
- Les heures qui tombent dans le saut de l’heure d’été sont ignorées ; chaque démon cron gère ce cas différemment.
Les cinq champs Unix
Une ligne crontab standard compte cinq champs : minute (0–59), heure (0–23), jour du mois (1–31), mois (1–12 ou JAN–DEC) et jour de la semaine (0–7, où 0 et 7 désignent dimanche, ou SUN–SAT). * signifie toutes les valeurs, la virgule énumère (1,15), le tiret donne une plage (9-17) et la barre oblique un pas (*/15 vaut 0, 15, 30 et 45).
Ainsi, 30 2 * * 1-5 s’exécute à 02:30 du lundi au vendredi, et 0 */6 * * * à 00:00, 06:00, 12:00 et 18:00. Les raccourcis @hourly, @daily, @weekly et @monthly valent 0 * * * *, 0 0 * * *, 0 0 * * 0 et 0 0 1 * *.
Ce qui change avec Quartz et Spring
Quartz ajoute un champ des secondes au début et une année facultative à la fin, numérote les jours de 1 à 7 à partir du dimanche et exige ? dans le jour du mois ou le jour de la semaine. Spring @Scheduled utilise six champs (secondes en premier) et des jours 0–7. Les deux acceptent L pour le dernier jour, W pour le jour ouvré le plus proche, 6L pour le dernier vendredi et 2#1 pour le premier lundi du mois.
Pièges courants
Avec cron Unix, si le jour du mois et le jour de la semaine sont tous deux restreints, la tâche part dès que l’un des deux correspond : 0 0 13 * 5 se déclenche chaque 13 et chaque vendredi, pas seulement les vendredis 13. Les démons cron utilisent le fuseau du serveur sauf indication contraire, et GitHub Actions tourne toujours en UTC. Au changement d’heure, une tâche à 02:30 peut être sautée ou doublée selon l’implémentation : préférez l’UTC pour les tâches critiques.
Questions fréquentes
Que signifie * * * * * ?
La tâche s’exécute chaque minute de chaque heure de chaque jour, soit 1 440 fois par jour. Chaque * représente toutes les valeurs de son champ, dans l’ordre minute, heure, jour du mois, mois, jour de la semaine.
Comment lancer une tâche cron toutes les 5 minutes ?
Avec */5 * * * *. Elle se déclenche aux minutes 0, 5, 10 et ainsi de suite jusqu’à 55, soit 288 fois par jour. Pour décaler le départ, écrivez par exemple 2-59/5 * * * *.
Quel fuseau horaire cron utilise-t-il ?
Le cron classique utilise le fuseau local du serveur. Certains systèmes acceptent CRON_TZ ou un réglage timeZone, les CronJob Kubernetes ont un champ timeZone et GitHub Actions fonctionne toujours en UTC. Choisissez le fuseau ici pour voir les heures correspondantes.
Quelle différence entre cron Unix et cron Quartz ?
Le cron Unix a 5 champs et commence par les minutes. Quartz en a 6 ou 7, commence par les secondes et peut finir par l’année, numérote dimanche 1 et exige ? dans l’un des deux champs de jour.
Comment planifier une tâche le dernier jour du mois ?
Quartz et Spring acceptent L dans le jour du mois : 0 0 0 L * ? en Quartz. Le cron Unix standard n’a pas de L ; on lance souvent la tâche du 28 au 31 et le script vérifie si le lendemain est le 1er.
Pourquoi ma tâche cron ne s’est-elle pas lancée à l’heure prévue ?
Vérifiez le fuseau du serveur, que jour du mois et jour de la semaine ne sont pas combinés par erreur, et que la commande fonctionne dans l’environnement minimal de cron, où PATH et les variables diffèrent de votre terminal.