Générateur d'expression cron

Collez une expression cron, dépliez chaque champ, lisez-la en français clair et prévisualisez les vraies prochaines exécutions.

Ce générateur d'expression cron montre ce qu'un planning va réellement faire avant que vous lui confiiez vos sauvegardes. Vous collez cinq champs, ou six quand vous avez besoin des secondes, et nous déplions chaque champ, disons en français clair quand le job se déclenche, puis listons les douze prochaines exécutions pour qu'un planning discrètement faux n'ait nulle part où se cacher. Vous pouvez charger un planning courant, changer la timezone d'affichage, et vérifier comment le cron Unix, les timers systemd, les CronJobs Kubernetes, GitHub Actions ou un scheduler Quartz lisent chacun votre syntaxe. Nous signalons aussi les pièges habituels : un champ de secondes que le cron classique refuse, la surprise du day-of-month face au day-of-week, et le fait que la timezone vit avec le scheduler, pas dans la chaîne. Il aide les sysadmins et les développeurs qui écrivent du cron à la main et veulent en avoir le coeur net. Tout tourne dans votre navigateur, rien de ce que vous saisissez n'est envoye.

100% dans votre navigateur. Rien de ce que vous tapez ne quitte cette page.

Constructeur cron, explicateur, aperçu des prochaines exécutions et vérificateur de plateforme

Ce générateur d'expression cron montre ce qu'un planning va réellement faire avant que vous lui confiiez une sauvegarde ou un job. Vous collez une expression, cinq champs ou six quand vous avez besoin des secondes, et nous déplions chaque champ, disons en français clair quand elle se déclenche, puis listons les douze prochaines exécutions pour qu'un planning discrètement faux n'ait nulle part où se cacher. Vous pouvez charger un planning courant, changer la timezone d'affichage, et vérifier comment le cron Unix, les timers systemd, les CronJobs Kubernetes, GitHub Actions ou un scheduler Quartz lisent chacun votre syntaxe. Nous signalons aussi les pièges habituels : un champ de secondes que le cron classique refuse, la surprise du day-of-month face au day-of-week, et le fait que la timezone vit avec le scheduler. Il aide les sysadmins et les développeurs à attraper une erreur ici, là où elle ne coûte rien.

Petit avertissement. La preview fait le calcul dans ton navigateur et l'affiche dans la timezone que tu choisis ici. Ton vrai job, lui, tourne dans la timezone configurée sur le scheduler de la machine. Les deux n'ont aucune obligation de coïncider. Et c'est précisément dans cet écart que les gens se font avoir.

Les expressions cron sont de courtes chaînes aux lourdes conséquences

Une seule petite ligne déclenche tes sauvegardes. Tes rapports, tes jobs de nettoyage, les queue workers, les déploiements, tout ça repose sur cinq minuscules champs. La syntaxe est assez dense pour qu'une coquille passe complètement inaperçue. La timezone du serveur n'est peut-être pas celle que tu as en tête. Le day-of-month et le day-of-week ne se combinent pas comme la plupart des gens l'imaginent. Et certaines plateformes ajoutent un champ de secondes dont le cron Unix classique n'a jamais entendu parler. J'ai déjà vu un planning qui « avait l'air OK » partir quelques centaines de fois de plus que prévu. Personne n'a apprécié cette matinée-là.

J'ai construit cet outil pour qu'il soit le contrôle que je fais systématiquement avant de faire confiance à un planning. Il décompose chaque champ. Il dit tout haut ce que le job va réellement faire, aligne les prochaines exécutions, et signale là où une plateforme donnée pourrait lire ta syntaxe différemment. Cron simple à cinq champs, version à six champs avec secondes : il gère les deux. Et il te fera un petit signe sur les pièges habituels avant que tu colles quoi que ce soit dans un serveur, un container Docker, un CronJob Kubernetes, un workflow GitHub ou l'outil d'automatisation que tu utilises ce jour-là.

Comment lire un planning cron

Lis de gauche à droite : minute, heure, jour du mois, mois, jour de la semaine. Six champs ? Alors les secondes se glissent en tête. Une étoile signifie « toutes les valeurs autorisées ici ». Les virgules listent quelques valeurs précises. Le tiret, c'est une plage. Le slash, c'est un step. Honnêtement, les symboles ne sont pas le plus dur, tu les auras assimilés en un après-midi. Ce qui te piège, c'est de t'assurer que l'expression veut dire la même chose pour le scheduler qui va vraiment l'exécuter.

  • Cron à cinq champs est la forme que tu croiseras le plus souvent sous Unix : minute heure jour mois jour-de-semaine.
  • Cron à six champs glisse simplement les secondes devant les minutes.
  • La syntaxe Quartz ajoute des tokens en plus comme ?, L, W ou # que le cron classique n'a jamais eus.
  • La timezone vit avec le scheduler sur la plupart des systèmes, pas à l'intérieur de la chaîne. Ne suppose pas que l'expression la transporte, parce que la plupart du temps non.
  • L'aperçu des prochaines exécutions reste, honnêtement, le moyen le plus rapide de repérer un planning discrètement faux avant qu'il ne parte en prod.

Exemples courants de débogage cron

Le job s'est lancé à la mauvaise heure ? Ne touche pas encore à l'expression. Vérifie d'abord la timezone du scheduler, parce que la plupart du temps c'est le coupable. Ça tourne bien trop souvent ? Regarde tes step fields, ceux du genre */5. La plateforme te recrache l'expression ? Détermine si elle veut cinq champs, six, ou du Quartz complet. Et si tu as fixé à la fois le day-of-month et le day-of-week, va découvrir si ton scheduler lit ça comme un OR ou comme un AND strict. Cette seule différence m'a déjà bouffé plus d'un week-end.

Questions fréquentes

Que signifient les cinq champs de cron ?

De gauche à droite : minute, heure, jour du mois, mois, jour de la semaine. Mets une astérisque dans n'importe lequel et tu dis « toutes les valeurs ici ». Donc une étoile dans le champ minute signifie chaque minute. Une fois que cet ordre est dans tes réflexes, lire une ligne de cron n'a plus rien d'intimidant.

Comment lancer un job tous les jours à minuit ?

0 0 * * * fait l'affaire. Minute 0 de l'heure 0, tous les jours. Colle-le tout en haut et je te le détaille, puis je te montre les prochains minuits qu'il va réellement viser. Comme ça tu sais qu'il atterrit là où tu crois avant qu'il n'approche de la prod.

Questions fréquentes

Est-ce que tous les systèmes cron supportent les secondes ?

Non. Celle-là, elle piège les gens en permanence. Le cron Unix classique s'arrête à cinq champs. Pas de secondes, point final. Certains schedulers plus récents ajoutent bien un champ de secondes, et les systèmes façon Quartz empilent encore plus de syntaxe par-dessus. Donc avant d'écrire cette ligne à six champs, assure-toi que ce qui va l'exécuter parle vraiment six champs.

Quelle timezone utilise cron ?

Celle dans laquelle le serveur ou le scheduler est configuré. Pas celle de ton portable. Et généralement pas UTC non plus, sauf si quelqu'un l'a décidé. Une poignée de plateformes hébergées te laissent définir une timezone par job, ce qui est génial quand tu l'as et un piège bien tranchant le jour où tu oublies que tu ne l'as pas. Dans le doute, logue la date tout en haut du job et relis-la.

Est-ce que cette preview peut remplacer les tests en production ?

Non, et ça m'embêterait que tu le croies. Il attrape vite les bourdes évidentes. Mais la vraie source de vérité, c'est le scheduler qui exécute réellement ton job, point final. Sers-toi de cet outil pour éliminer les bêtises, puis va vérifier sur le système live avant de considérer que c'est bouclé.

Quelle est la différence entre */5 et 5 dans un champ cron ?

Facile à confondre. Résultats radicalement différents. */5 est un step, toutes les cinq unités, donc dans le champ minute ça donne 0, 5, 10, 15 et ainsi de suite sur toute l'heure. Le 5 tout seul est une valeur unique : il se déclenche une fois, exactement à 5. Donc l'un tourne douze fois par heure. L'autre une seule. Choisis le mauvais et ton job occasionnel cesse soudain de l'être.