Einen Cron-Ausdruck erstellen

erstellt einen Cron-Ausdruck aus visuellen Feldern oder einer Voreinstellung (jede Minute, stündlich, täglich, wöchentlich...)

À quoi sert un assistant cron ?

Une expression cron tient en cinq champs et reste pourtant l'une des plus génératrices de bugs en production. Combien de fois un développeur a écrit 0 0 * * 1 en pensant « tous les lundis », sans se rappeler que 1 peut signifier dimanche selon les implémentations ? Combien de fois a-t-on confondu */15 et 15 ? L'assistant cron répond à ce besoin : construire visuellement une expression cron, à partir de préréglages courants ou de champs individuels, et obtenir l'expression finale prête à coller dans un crontab.

L'outil est l'inverse de notre analyseur d'expressions cron : là où l'analyseur prend une expression et déroule les prochaines exécutions, l'assistant prend des choix humains et produit l'expression.

Les cinq champs cron, en clair

Une expression cron standard contient cinq champs séparés par des espaces :

minute  heure  jour-du-mois  mois  jour-de-la-semaine
*       *      *             *     *
  • minute (0 à 59) ;
  • heure (0 à 23) ;
  • jour du mois (1 à 31) ;
  • mois (1 à 12 ou abréviations Jan, Feb, etc.) ;
  • jour de la semaine (0 à 7, 0 et 7 valant tous deux dimanche dans la plupart des implémentations).

Chaque champ accepte plusieurs formes : * (toutes les valeurs), un entier précis (5), une liste (1,3,5), une plage (9-17), un pas (*/15 toutes les 15 valeurs), ou une combinaison (0-30/5).

Les préréglages courants

L'assistant propose une liste de préréglages qui couvrent la grande majorité des besoins. Sélectionner un préréglage écrase les champs individuels et produit l'expression correspondante :

  • Toutes les minutes : * * * * *. À éviter en production sauf besoin particulier.
  • Toutes les heures : 0 * * * *. À chaque début d'heure.
  • Tous les jours : 0 0 * * *. À minuit.
  • Toutes les semaines : 0 0 * * 0. Tous les dimanches à minuit.
  • Tous les mois : 0 0 1 * *. Le 1er du mois à minuit.
  • Tous les ans : 0 0 1 1 *. Le 1er janvier à minuit.

Composer une expression personnalisée

Pour des cas plus spécifiques, l'assistant expose les cinq champs en saisie libre. Quelques exemples utiles :

  • Tous les jours à 3h du matin : minute=0, heure=3, autres champs *.
  • Toutes les 15 minutes : minute=*/15, autres champs *.
  • Du lundi au vendredi à 9h : minute=0, heure=9, jour-de-la-semaine=1-5.
  • Tous les 1er et 15 du mois à midi : minute=0, heure=12, jour-du-mois=1,15.
  • Toutes les 5 minutes entre 9h et 17h : minute=*/5, heure=9-17.

Pièges classiques

  • Jour du mois et jour de la semaine combinés : si les deux ne sont pas *, le comportement diffère selon les implémentations. Linux/Vixie cron applique un OU ; les librairies modernes ont parfois un comportement différent. À éviter.
  • Jour 1 = lundi ou dimanche ? : selon le pays et la convention. La plupart des cron Unix considèrent dimanche=0 et samedi=6. Vérifiez votre planificateur.
  • Fuseau horaire : un cron Unix utilise par défaut le fuseau du serveur. Les planificateurs applicatifs (Symfony Scheduler, Quartz) permettent souvent de fixer un fuseau dédié.
  • Minute manquante : * * * * * exécute le job toutes les minutes, ce qui n'est rarement ce que l'on veut. Pensez à fixer un déclencheur précis (0) pour des tâches horaires.

Lecture humaine et sortie

En plus de l'expression cron, l'outil propose une lecture humaine succincte (« tous les jours à minuit », « toutes les 5 minute »). C'est un garde-fou : si la phrase ne correspond pas à votre intention, l'expression est probablement fausse. Pour un cas complexe, utilisez ensuite notre analyseur cron pour calculer les prochaines dates d'exécution réelles.

Questions fréquentes

L'outil supporte-t-il les expressions à 6 champs (avec secondes) ?

Non : le format à 5 champs est le standard Unix et la base commune à la plupart des planificateurs. Quartz (Java) accepte un champ supplémentaire pour les secondes, mais le besoin réel est rarement justifié.

Quel est le rapport avec Symfony Scheduler ?

Symfony Scheduler accepte les expressions cron à 5 champs via Schedule::cron('0 3 * * *', ...) . L'expression produite par l'assistant peut donc être collée telle quelle.

Faut-il préfixer la commande dans le crontab système ?

Oui, dans /etc/crontab il faut un utilisateur (0 3 * * * www-data /usr/bin/php ...), tandis que crontab -e par utilisateur l'omet. L'expression elle-même reste identique.

Comment tester une expression sans attendre l'heure réelle ?

Notre analyseur cron calcule les N prochaines exécutions à partir de l'instant courant. C'est le meilleur moyen de valider l'intention.

Beispielanfrage

curl -X POST https://cdrn.fr/api/v1/tools/cron-builder/execute \
  -H "Content-Type: application/json" \
  -d '{"preset":"none","minute":"*","hour":"*","day_of_month":"*","month":"*","day_of_week":"*"}'

Eingabeschema

Feld Typ Erforderlich Standard
preset choice (none, every_minute, hourly, daily, weekly, monthly, yearly) none
minute string *
hour string *
day_of_month string *
month string *
day_of_week string *

Endpunkte

  • GET https://cdrn.fr/api/v1/tools - listet alle verfügbaren Tools auf
  • GET https://cdrn.fr/api/v1/tools/cron-builder - liefert das Schema dieses Tools
  • POST https://cdrn.fr/api/v1/tools/cron-builder/execute - führt dieses Tool mit einem JSON-Payload aus