Aller au contenu
LeedyBox
Soutenir

Analyseur et générateur d’expressions cron

Lisez les expressions cron Unix, Spring, Quartz et AWS, affichez les prochaines exécutions dans n’importe quel fuseau horaire ou construisez une expression champ par champ.

Exemples :

Planification

Détail des champs

ChampExpressionValeurs

Prochaines exécutions

    Générateur visuel

    Choisissez comment chaque champ se répète. « Valeurs précises » accepte une liste comme 1,15 ou MON,WED ; « Plage », un début-fin comme 9-17 ; « Tous les N », le pas.

    Expression générée
    Caractères spéciaux
    *Toutes les valeurs du champ.
    ,Liste de valeurs, p. ex. 1,15,30.
    -Plage, p. ex. 9-17 ou MON-FRI.
    /Pas, p. ex. */15 = toutes les 15 ; 5/15 = à partir de 5 toutes les 15 (pas dans le cron Unix).
    ?Aucune valeur précise. Quartz et AWS l’exigent dans le jour du mois ou le jour de la semaine.
    LDernier : L dans le jour du mois = dernier jour ; L-3 = trois jours avant ; 5L dans le jour de la semaine = dernier jeudi (numérotation Quartz).
    WJour ouvré le plus proche : 15W = le jour ouvré le plus proche du 15 ; LW = dernier jour ouvré du mois.
    #N-ième jour de la semaine du mois : 6#3 = troisième vendredi dans Quartz/AWS (1 = dimanche) ; 5#3 dans Spring (0 = dimanche).
    @daily …Macros : @yearly, @monthly, @weekly, @daily, @hourly ; @reboot s’exécute une fois au démarrage.

    Vérifiez les résultats avant de les utiliser. L’outil est fourni tel quel, sans garantie, et ses résultats peuvent être incomplets ou erronés. Conditions d’utilisation

    Les implémentations de cron diffèrent par l’ordre des champs, la numérotation des jours de la semaine et les caractères spéciaux. Les prochaines exécutions sont calculées dans votre navigateur pour le fuseau horaire choisi ; vérifiez la planification sur le système qui l’exécutera.

    Mode d'emploi

    1. Saisissez ou collez une planification dans « Expression cron », ou cliquez sur l’un des exemples, ce qui règle aussi « Format » sur « Détection automatique ». Le résumé et les heures d’exécution se mettent à jour pendant la saisie.
    2. Laissez « Format » sur « Détection automatique » ou sélectionnez le système pour lequel l’expression est écrite. La détection automatique lit 5 champs comme Unix et 7 comme Quartz. Pour 6 champs, elle choisit AWS ou Quartz selon la position du « ? », choisit AWS lorsque le dernier champ contient une année comprise entre 1970 et 2199, et suppose Spring dans les autres cas. Les macros comme @weekly sont lues comme Unix. Lorsque l’expression est valide, la ligne d’état indique le format utilisé.
    3. Lisez « Planification » et « Détail des champs » pour voir à quoi correspond chaque champ, puis vérifiez les dates sous « Prochaines exécutions ». « Fuseau horaire » indique au départ le fuseau de votre navigateur ; sélectionnez-en un autre si besoin et choisissez 5, 10 ou 20 sous « Exécutions à afficher ». Pour les fuseaux autres que UTC, chaque exécution indique aussi l’heure UTC.
    4. Pour construire plutôt une expression, ouvrez « Générateur visuel », sélectionnez un format et choisissez comment chaque champ se répète, en saisissant une valeur lorsque le champ en demande une. « Utiliser cette expression » copie l’« Expression générée » dans « Expression cron », règle « Format » sur le format du générateur et lance l’analyse, pour que vous puissiez vérifier les heures d’exécution.

    Questions fréquentes

    L’expression que je saisis est-elle envoyée quelque part ?

    Non. L’expression est analysée et les heures d’exécution sont calculées dans votre navigateur en JavaScript ; elle n’est pas envoyée à LeedyBox.

    Pourquoi 0 0 13 * 5 s’exécute-t-il tous les vendredis et pas seulement le vendredi 13 ?

    Dans le cron Unix, lorsque le jour du mois et le jour de la semaine sont tous deux restreints (aucun des deux ne commence par *), un jour convient si l’un ou l’autre des champs correspond : cette expression s’exécute donc le 13 de chaque mois et tous les vendredis. L’outil applique cette règle aux expressions Unix, et « Planification » indique alors « l’un des deux suffit ». Pour les expressions Spring, il exige que les deux champs correspondent, et Quartz et AWS évitent la question en imposant « ? » dans l’un des deux champs. Avec le cron Unix, une solution courante consiste à planifier la tâche tous les vendredis et à vérifier la date dans la tâche elle-même.

    Le dimanche correspond-il à 0, à 1 ou à 7 ?

    Cela dépend du format. Dans les expressions Unix et Spring, 0 et 7 désignent tous deux le dimanche et 1 le lundi ; dans Quartz et AWS, 1 désigne le dimanche et 7 le samedi, si bien que 1-5 y signifie du dimanche au jeudi. Les noms de jours comme MON-FRI évitent cette différence dans Spring, Quartz et AWS.

    Pourquoi ma ligne de crontab ou mon expression AWS cron( ) est-elle refusée ?

    Saisissez uniquement les champs de planification. La commande en fin de ligne de crontab, ainsi que le nom d’utilisateur dans /etc/crontab, sont comptés comme des champs supplémentaires : l’outil signale alors un champ non valide ou un nombre de champs incorrect. Pour AWS, collez les six champs situés à l’intérieur de cron( ), sans cette enveloppe.

    Comment réécrire une expression Unix pour Spring, Quartz ou AWS ?

    Spring ajoute un champ des secondes au début : 0 9 * * 1-5 devient ainsi 0 0 9 * * 1-5. Quartz exige en plus « ? » dans l’un des champs de jour et numérote le dimanche 1 : la même planification s’écrit donc 0 0 9 ? * MON-FRI. AWS n’a pas de champ des secondes, exige « ? » dans l’un des champs de jour, comme Quartz, et ajoute une année à la fin : 0 9 ? * MON-FRI *. Si l’expression Unix restreint les deux champs de jour, elle repose sur la règle « l’un ou l’autre » décrite plus haut, que ces formats n’utilisent pas : il faut alors en général deux planifications. Vérifiez le résultat avec le format cible sélectionné et comparez les prochaines exécutions.

    Pourquoi l’outil indique-t-il qu’aucune exécution n’a été trouvée ?

    L’expression est valide, mais aucune heure correspondante n’a été trouvée dans les 8 années environ que l’outil examine. Les causes typiques sont des dates qui n’existent pas, comme 0 0 30 2 * (30 février) ou le jour 31 combiné uniquement à des mois de 30 jours, et un champ année situé dans le passé. Une année située à plus de 8 ans donne le même message, bien que cette planification puisse s’exécuter plus tard. Certains planificateurs, dont le cron Unix classique, acceptent sans avertissement une date qui n’existe pas, et la tâche ne s’exécute pas.

    Quel fuseau horaire est utilisé, et qu’en est-il de l’heure d’été ?

    Les heures d’exécution sont calculées pour le fuseau sélectionné sous « Fuseau horaire ». Choisissez celui qu’utilise votre planificateur : crontab suit généralement le fuseau horaire du serveur, les règles planifiées d’AWS EventBridge utilisent l’UTC, et EventBridge Scheduler permet de définir un fuseau horaire. Le menu propose le fuseau de votre navigateur, l’UTC et une sélection de fuseaux courants ; si celui de votre planificateur n’y figure pas, choisissez-en un qui a le même décalage par rapport à l’UTC et les mêmes dates de changement d’heure. Une exécution prévue à une heure sautée lorsque l’on avance l’heure est omise de la liste, et une heure qui se produit deux fois lorsque l’on recule l’heure n’y figure qu’une fois. Les démons cron gèrent ces heures de différentes manières ; cronie, par exemple, peut exécuter juste après le changement d’heure une tâche prévue pendant l’heure sautée. Vérifiez le comportement de votre planificateur, ou utilisez l’UTC, qui ne connaît pas d’heure d’été.