Analyseur d’expression cron
Voyez à quelles dates 0 */6 * * 1-5 s’exécute vraiment, et ce que chaque champ autorise.
Les exemples remplacent temporairement la saisie et les réglages. Vous pouvez rétablir votre travail précédent.
Collez ou saisissez du texte ci-dessus pour voir le résultat ici.
Vos fichiers restent sur votre appareil
Cet outil fonctionne entièrement dans votre navigateur. Ce que vous collez est traité sur votre appareil et n’est jamais envoyé à un serveur : vous pouvez l’utiliser sans crainte avec des jetons, des clés et des textes non publiés.
Exemple
« Le premier lundi du mois » : pourquoi 0 9 1-7 * 1 s’exécute bien plus souvent
Une équipe veut envoyer le rapport mensuel le premier lundi du mois à 9 h et écrit 0 9 1-7 * 1. On colle l’expression et on demande 10 exécutions. Les dates ci-dessous sont calculées à partir du dimanche 1er novembre 2026 à 12 h ; chez vous, la liste part de l’heure actuelle.
- La liste donne lundi 2, mardi 3, mercredi 4, jeudi 5, vendredi 6 et samedi 7 novembre 2026 à 09:00, puis les lundis 9, 16, 23 et 30 novembre : dix envois en un mois au lieu d’un.
- Sous « // champs » : jour du mois 1,2,3,4,5,6,7 et jour de la semaine 1. Les deux étant restreints, ils se combinent par OU, comme dans Vixie cron : un des sept premiers jours, ou un lundi.
- Cron n’a pas d’écriture pour « premier lundi » : 1#1, ou le L de Quartz, renvoient « Valeur non valide ».
- La solution courante : 0 9 1-7 * * et un test du jour dans la commande, par exemple [ "$(date +\%u)" = 1 ] && ./rapport.sh (dans une crontab, le % s’écrit \%).
| Expression | Prochaines exécutions depuis le dim. 1er novembre 2026, 12:00 | Pourquoi |
|---|---|---|
| 0 9 1-7 * 1 | du lun 2 au sam 7 nov, puis lun 9, 16, 23 et 30 nov, à 09:00 | jour du mois OU lundi |
| 0 9 1-7 * * | du lun 2 au sam 7 nov, puis du mar 1er au ven 4 déc, à 09:00 | les sept premiers jours seulement |
| 0 9 * * 1 | lun 2, 9, 16, 23 et 30 nov, lun 7 déc… | tous les lundis |
| 0 9 * * MON-FRI | du lun 2 au ven 6 nov, puis du lun 9 au ven 13 nov, mercredi 11 novembre compris | cron ne connaît pas les jours fériés |
Avec 0 9 1-7 * * et le test du lundi, le rapport part le lundi 2 novembre puis le lundi 7 décembre 2026. La liste s’affiche dans le fuseau de votre navigateur : un serveur réglé en UTC exécute 9 h UTC, soit 10 h à Paris en hiver et 11 h en été.
Comment ça marche
- Collez une expression à cinq champs : minute, heure, jour du mois, mois, jour de la semaine. Par exemple 30 2 * * 0 s’exécute à 02 h 30 chaque dimanche.
- Choisissez le nombre d’exécutions à venir à afficher, de 1 à 20.
- Le résultat s’affiche pendant la saisie. Vous obtenez les exécutions en dates complètes, comme « dimanche 25 octobre 2026 à 02:30 », puis chaque champ avec les valeurs qu’il autorise.
- Comparez les dates à ce que vous vouliez. Les erreurs d’un cran sur le jour de la semaine ou sur un pas sautent aux yeux dans la liste.
Questions fréquentes
- Dans quel fuseau horaire sont les prochaines exécutions ?
- Elles sont calculées dans le fuseau local de votre navigateur, celui de votre système. Les serveurs exécutent généralement cron en UTC ou dans le fuseau configuré de la machine : décalez donc les résultats quand vous les comparez à une planification de production.
- Quelle syntaxe est prise en charge ?
- Les cinq champs standards avec * pour toute valeur, les listes séparées par des virgules (1,15), les plages (1-5), les pas (*/10 ou 1-30/5) et les noms de trois lettres pour les mois (JAN-DEC) et les jours (SUN-SAT). 0 et 7 signifient tous deux dimanche. Les chaînes spéciales @hourly, @daily, @weekly, @monthly et @yearly sont développées en leur équivalent à cinq champs.
- Comment le jour du mois et le jour de la semaine se combinent-ils ?
- Comme dans Vixie cron : si les deux champs sont restreints (aucun n’est *), la tâche s’exécute quand l’un ou l’autre correspond, pas les deux. Ainsi 0 0 1 * MON s’exécute le 1er de chaque mois et aussi tous les lundis. Cela surprend beaucoup de monde : vérifiez la liste des prochaines exécutions.
- Les secondes ou le champ année sont-ils gérés ?
- Une expression à six champs est lue comme l’écrivent Quartz et Spring, secondes en tête : les secondes sont ignorées et les exécutions se calculent sur les cinq autres champs, donc 0 0 12 * * * s’exécute chaque jour à 12 h, et le point d’interrogation de Quartz est lu comme *. Exception : la forme d’AWS EventBridge, minute en tête et année en dernier, reconnaissable au point d’interrogation sur le jour du mois ou le jour de la semaine. Une planification AWS de midi chaque jour s’exécute donc bien chaque jour à 12 h, et l’année s’affiche sous les autres champs. Un septième champ après les six de Quartz est lu comme l’année.
- Comment écrire « le premier lundi du mois » ?
- Pas en cron seul : 0 9 1-7 * 1 s’exécute les sept premiers jours ET tous les lundis, et 1#1 n’est pas accepté. Écrivez 0 9 1-7 * * et testez le jour dans la commande, par exemple [ "$(date +\%u)" = 1 ] && ./rapport.sh.
- Peut-on planifier le dernier jour du mois ?
- Pas directement : le L de Quartz renvoie « Valeur non valide ». Planifiez 0 0 28-31 * * et, dans la commande, vérifiez que le lendemain est le 1er, par exemple [ "$(date -d tomorrow +\%d)" = 01 ] avec la commande date de GNU.
- L’expression est-elle envoyée à un serveur ?
- Non. L’analyse et le calcul des dates se font dans le navigateur. Il n’y a rien à envoyer et rien à journaliser.