{"id":451,"date":"2026-09-09T10:55:41","date_gmt":"2026-09-09T10:55:41","guid":{"rendered":"https:\/\/hippotool.com\/?p=451"},"modified":"2026-09-09T10:55:47","modified_gmt":"2026-09-09T10:55:47","slug":"cron-expression-cheat-sheet","status":"publish","type":"post","link":"https:\/\/hippotool.com\/fr\/cron-expression-cheat-sheet\/","title":{"rendered":"Aide-m\u00e9moire et exemples pratiques sur les expressions Cron"},"content":{"rendered":"<h2 class=\"wp-block-heading\">Qu&#039;est-ce qu&#039;une expression Cron\u00a0?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Une expression cron est une courte cha\u00eene de caract\u00e8res indiquant \u00e0 un planificateur quand ex\u00e9cuter une t\u00e2che r\u00e9currente. Sous Unix et Linux, cron utilise cinq champs de date et d&#039;heure, dans cet ordre fixe\u00a0: minute, heure, jour du mois, mois et jour de la semaine. Une ligne du fichier crontab de l&#039;utilisateur place une commande apr\u00e8s ces cinq champs, et le d\u00e9mon cron ex\u00e9cute cette commande lorsque ces champs correspondent \u00e0 l&#039;heure actuelle.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voici l&#039;exemple le plus courant en production\u00a0:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">texte<code>0 2 * * *<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En clair\u00a0: ex\u00e9cuter chaque jour \u00e0 02h00 (2h00 du matin) dans le fuseau horaire configur\u00e9 par le planificateur.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Note de compatibilit\u00e9\u00a0:<\/strong> Ce guide commence par l&#039;utilisation de cron sous Unix\/Linux avec cinq champs. D&#039;autres planificateurs peuvent utiliser un nombre de champs diff\u00e9rent, un fuseau horaire diff\u00e9rent ou des caract\u00e8res sp\u00e9ciaux. Les expressions Quartz, par exemple, utilisent g\u00e9n\u00e9ralement six ou sept champs, incluant les secondes. Amazon EventBridge Scheduler utilise \u00e9galement six champs, incluant l&#039;ann\u00e9e.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Syntaxe de Cron\u00a0: Les cinq champs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Les cinq champs sont positionnels. Les lire de gauche \u00e0 droite est la m\u00e9thode la plus rapide pour d\u00e9coder une expression.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">texte<code>\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 minute (0\u201359) \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 heure (0\u201323) \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 jour du mois (1\u201331) \u2502 \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500 mois (1\u201312) \u2502 \u2502 \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500 jour de la semaine (variable selon la plateforme\u00a0; POSIX utilise 0 pour dimanche) \u2502 \u2502 \u2502 \u2502 \u2502 * * * * *<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Position<\/th><th>Champ<\/th><th>valeurs typiques<\/th><th>Exemple<\/th><th>Signification<\/th><\/tr><\/thead><tbody><tr><td>1<\/td><td>Minute<\/td><td>0\u201359<\/td><td><code>30 * * * *<\/code><\/td><td>\u00c0 30 minutes apr\u00e8s chaque heure<\/td><\/tr><tr><td>2<\/td><td>Heure<\/td><td>0\u201323<\/td><td><code>0 6 * * *<\/code><\/td><td>Tous les jours \u00e0 6h00<\/td><\/tr><tr><td>3<\/td><td>Jour du mois<\/td><td>1\u201331<\/td><td><code>0 0 1 * *<\/code><\/td><td>Minuit le 1er<\/td><\/tr><tr><td>4<\/td><td>Mois<\/td><td>1\u201312<\/td><td><code>0 0 1 7 *<\/code><\/td><td>Minuit le 1er juillet<\/td><\/tr><tr><td>5<\/td><td>Jour de la semaine<\/td><td>POSIX 0\u20136 avec 0 = dimanche<\/td><td><code>0 12 * * 1<\/code><\/td><td>Lundi \u00e0 12h00<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Deux formats de crontab sont importants, car les confondre est une erreur classique\u00a0:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A <strong>crontab utilisateur<\/strong> La ligne contient les cinq champs de planification suivis de la commande \u00e0 ex\u00e9cuter.<\/li>\n\n\n\n<li>A <strong>crontab syst\u00e8me<\/strong> ligne (par exemple <code>\/etc\/crontab<\/code> ou des fichiers dans <code>\/etc\/cron.d<\/code>) contient les cinq champs de planification, puis un nom d&#039;utilisateur, puis la commande.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Si vous collez une ligne crontab utilisateur dans un fichier crontab syst\u00e8me, cron tentera d&#039;interpr\u00e9ter le premier mot de votre commande comme un nom d&#039;utilisateur. Consultez toujours la documentation de votre plateforme avant de copier une planification entre fichiers ou entre services.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Caract\u00e8res sp\u00e9ciaux de Cron<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Quatre op\u00e9rateurs sont standardis\u00e9s dans le cron de style POSIX et dans les impl\u00e9mentations Linux courantes d\u00e9riv\u00e9es de Vixie cron.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Symbole<\/th><th>But<\/th><th>Exemple<\/th><th>Signification<\/th><\/tr><\/thead><tbody><tr><td><code>*<\/code><\/td><td>Chaque valeur valide<\/td><td><code>*\/5 * * * *<\/code><\/td><td>Toutes les 5 minutes<\/td><\/tr><tr><td><code>,<\/code><\/td><td>Une liste<\/td><td><code>0 9,17 * * *<\/code><\/td><td>\u00c0 9h00 et \u00e0 17h00<\/td><\/tr><tr><td><code>-<\/code><\/td><td>Une gamme inclusive<\/td><td><code>0 9-17 * * 1-5<\/code><\/td><td>\u00c0 chaque heure pile, de 9h00 \u00e0 17h00, du lundi au vendredi<\/td><\/tr><tr><td><code>\/<\/code><\/td><td>Un intervalle de marche<\/td><td><code>*\/15 * * * *<\/code><\/td><td>Toutes les 15 minutes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">POSIX d\u00e9finit lui-m\u00eame l&#039;ast\u00e9risque, la liste des virgules et la plage des tirets. L&#039;op\u00e9rateur d&#039;\u00e9tape <code>\/<\/code> provient de l&#039;extension Vixie cron, o\u00f9 suivre une plage avec <code>\/<\/code> on parcourt cette plage par sauts, et des \u00e9tapes sont \u00e9galement autoris\u00e9es apr\u00e8s un ast\u00e9risque.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&#039;intervalle entre les \u00e9tapes suit l&#039;horloge et le calendrier, et non le temps d&#039;ach\u00e8vement de votre t\u00e2che. <code>*\/5 * * * *<\/code> Les tirs ont lieu \u00e0 la minute 0, 5, 10, etc. Cela ne signifie pas \u201c cinq minutes apr\u00e8s la fin du tir pr\u00e9c\u00e9dent \u201d.\u201d<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Op\u00e9rateurs et macros sp\u00e9cifiques \u00e0 la plateforme<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Des symboles tels que <code>?<\/code>, <code>L<\/code>, <code>W<\/code>, et <code>#<\/code>, plus des macros telles que <code>@reboot<\/code>, <code>@heure<\/code>, <code>@tous les jours<\/code>, <code>@hebdomadaire<\/code>, <code>@mensuel<\/code>, et <code>@annuel<\/code>, Ces fonctionnalit\u00e9s sont sp\u00e9cifiques \u00e0 l&#039;impl\u00e9mentation. Elles existent dans certains planificateurs et pas dans d&#039;autres, et leur comportement diff\u00e8re selon le planificateur. La documentation relative aux cron Linux de type Vixie\/Cronie les d\u00e9crit. <code>@<\/code>-macros et valeurs nomm\u00e9es pour le mois et le jour de la semaine. <code>L<\/code>, <code>W<\/code>, et <code>#<\/code> sont des jetons de style Quartz, et Quartz utilise <code>?<\/code> dans les champs de jour. Kubernetes CronJob prend en charge <code>@<\/code>-macros et friandises <code>?<\/code> comme \u00e9quivalent \u00e0 <code>*<\/code>. Vercel Cron Jobs rejette les alias de nom tels que <code>LUN<\/code> ou <code>JAN<\/code> Enti\u00e8rement. N&#039;utilisez ces m\u00e9thodes que si elles sont mentionn\u00e9es dans la documentation de votre planificateur cible.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Aide-m\u00e9moire sur les expressions Cron\u00a0: exemples courants<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Chaque expression ci-dessous respecte la syntaxe standard Unix\/Linux \u00e0 cinq champs. Les heures sont affich\u00e9es au format 24 heures et interpr\u00e9t\u00e9es selon le fuseau horaire configur\u00e9 par le planificateur.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Horaires \u00e0 la minute et \u00e0 l&#039;heure pr\u00e8s<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Expression<\/th><th>Anglais simple<\/th><\/tr><\/thead><tbody><tr><td><code>* * * * *<\/code><\/td><td>Chaque minute de chaque jour<\/td><\/tr><tr><td><code>*\/5 * * * *<\/code><\/td><td>Toutes les 5 minutes (minute 0, 5, 10, \u2026)<\/td><\/tr><tr><td><code>*\/10 * * * *<\/code><\/td><td>Toutes les 10 minutes<\/td><\/tr><tr><td><code>*\/15 * * * *<\/code><\/td><td>Toutes les 15 minutes (:00, :15, :30, :45)<\/td><\/tr><tr><td><code>*\/30 * * * *<\/code><\/td><td>Toutes les 30 minutes (:00 et :30)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">C\u2019est avec des planifications inf\u00e9rieures \u00e0 une heure que les probl\u00e8mes de fiabilit\u00e9 apparaissent en premier. Certaines plateformes g\u00e9r\u00e9es refusent les planifications trop fr\u00e9quentes\u00a0: GitHub Actions limite l\u2019intervalle minimal pris en charge \u00e0 5\u00a0minutes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Horaires horaires<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Expression<\/th><th>Anglais simple<\/th><\/tr><\/thead><tbody><tr><td><code>0 * * * *<\/code><\/td><td>Au d\u00e9but de chaque heure<\/td><\/tr><tr><td><code>15 * * * *<\/code><\/td><td>\u00c0 15 minutes apr\u00e8s chaque heure<\/td><\/tr><tr><td><code>0 *\/2 * * *<\/code><\/td><td>Toutes les 2 heures, \u00e0 l&#039;heure pile (00:00, 02:00, 04:00, \u2026)<\/td><\/tr><tr><td><code>5,35 * * * *<\/code><\/td><td>Deux fois par heure, \u00e0 0:05 et 0:35<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Des minutes hallucinantes avec une liste comme <code>5,35<\/code> Cela s&#039;av\u00e8re utile en pratique. Si des dizaines de t\u00e2ches se lancent simultan\u00e9ment \u00e0 la minute 0, elles se disputent les ressources du processeur, les connexions \u00e0 la base de donn\u00e9es et les limites de d\u00e9bit de l&#039;API au m\u00eame instant.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Horaires quotidiens<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Expression<\/th><th>Anglais simple<\/th><\/tr><\/thead><tbody><tr><td><code>0 0 * * *<\/code><\/td><td>Tous les jours \u00e0 minuit (00:00)<\/td><\/tr><tr><td><code>0 2 * * *<\/code><\/td><td>Tous les jours \u00e0 02h00 (2h00 du matin)<\/td><\/tr><tr><td><code>30 6 * * *<\/code><\/td><td>Tous les jours \u00e0 06h30 (6h30 du matin)<\/td><\/tr><tr><td><code>45 23 * * *<\/code><\/td><td>Tous les jours \u00e0 23h45 (23h45)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Horaires de semaine et horaires hebdomadaires<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Expression<\/th><th>Anglais simple<\/th><\/tr><\/thead><tbody><tr><td><code>0 9 * * 1-5<\/code><\/td><td>\u00c0 9h00, du lundi au vendredi<\/td><\/tr><tr><td><code>30 8 * * 1-5<\/code><\/td><td>\u00c0 8h30, du lundi au vendredi<\/td><\/tr><tr><td><code>0 0 * * 0<\/code><\/td><td>\u00c0 minuit dimanche<\/td><\/tr><tr><td><code>0 10 * * 0,6<\/code><\/td><td>\u00c0 10h00 le dimanche et le samedi<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">La num\u00e9rotation des jours de la semaine d\u00e9pend de la plateforme. POSIX d\u00e9finit les chiffres de 0 \u00e0 6, 0 repr\u00e9sentant le dimanche. De nombreuses impl\u00e9mentations cron sous Linux acceptent les chiffres de 0 \u00e0 7, o\u00f9 0 et 7 d\u00e9signent tous deux le dimanche, et acceptent \u00e9galement les noms. Quartz utilise quant \u00e0 lui les chiffres de 1 \u00e0 7 pour son champ \u00ab\u00a0jour de la semaine\u00a0\u00bb, et AWS EventBridge Scheduler utilise \u00e9galement les chiffres de 1 \u00e0 7. <code>DIM-SAM<\/code>. Veuillez v\u00e9rifier la num\u00e9rotation dans la documentation de votre planificateur avant de vous fier \u00e0 un horaire de week-end ou de semaine.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Calendriers mensuels et annuels<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Expression<\/th><th>Anglais simple<\/th><\/tr><\/thead><tbody><tr><td><code>0 0 1 * *<\/code><\/td><td>Minuit le 1er de chaque mois<\/td><\/tr><tr><td><code>30 2 1 * *<\/code><\/td><td>2h30 le 1er de chaque mois<\/td><\/tr><tr><td><code>0 0 1 1 *<\/code><\/td><td>Minuit le 1er janvier, une fois par an<\/td><\/tr><tr><td><code>0 0 1 1,4,7,10 *<\/code><\/td><td>Minuit le 1er janvier, avril, juillet et octobre<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u201c\u00a0Dernier jour du mois\u00a0\u201d n&#039;est pas portable dans une t\u00e2che cron de base \u00e0 cinq champs. Il n&#039;existe pas d&#039;op\u00e9rateur standard pour cela\u00a0; ne le repr\u00e9sentez donc pas par une expression g\u00e9n\u00e9rique. Quartz fournit une solution. <code>L<\/code> jeton dans son propre dialecte, et EventBridge Scheduler liste <code>L<\/code> Cette fonction ne prend pas en compte le jour du mois ni le jour de la semaine, mais elle n&#039;a pas sa place dans une crontab Linux. Sous Linux, g\u00e9rez la logique de fin de mois directement dans votre script, par exemple en l&#039;ex\u00e9cutant quotidiennement et en s&#039;arr\u00eatant sauf si demain est le 1er du mois.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comment lire une expression Cron<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><code>*\/5 * * * *<\/code><\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">texte<code>*\/5 * * * *<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Champ<\/th><th>Valeur<\/th><th>En lisant<\/th><\/tr><\/thead><tbody><tr><td>Minute<\/td><td><code>*\/5<\/code><\/td><td>Toutes les 5 minutes, \u00e0 partir de 0<\/td><\/tr><tr><td>Heure<\/td><td><code>*<\/code><\/td><td>Toutes les heures<\/td><\/tr><tr><td>Jour du mois<\/td><td><code>*<\/code><\/td><td>Tous les jours<\/td><\/tr><tr><td>Mois<\/td><td><code>*<\/code><\/td><td>Chaque mois<\/td><\/tr><tr><td>Jour de la semaine<\/td><td><code>*<\/code><\/td><td>Chaque jour de la semaine<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">En langage naturel\u00a0: toutes les 5\u00a0minutes, 24\u00a0h\/24 et 7\u00a0j\/7. Attention\u00a0: la grille des minutes n\u2019est pas affect\u00e9e par le fuseau horaire, mais les horodatages des journaux et toute logique bas\u00e9e sur la date dans votre script le sont.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><code>0 9 * * 1-5<\/code><\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">texte<code>0 9 * * 1-5<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Champ<\/th><th>Valeur<\/th><th>En lisant<\/th><\/tr><\/thead><tbody><tr><td>Minute<\/td><td><code>0<\/code><\/td><td>\u00c0 l&#039;heure<\/td><\/tr><tr><td>Heure<\/td><td><code>9<\/code><\/td><td>09:00<\/td><\/tr><tr><td>Jour du mois<\/td><td><code>*<\/code><\/td><td>N&#039;importe quelle date<\/td><\/tr><tr><td>Mois<\/td><td><code>*<\/code><\/td><td>N&#039;importe quel mois<\/td><\/tr><tr><td>Jour de la semaine<\/td><td><code>1-5<\/code><\/td><td>Du lundi au vendredi<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">En langage naturel\u00a0: \u00e0 9\u00a0h\u00a000 (9\u00a0h\u00a000 du matin) en semaine. Attention au fuseau horaire\u00a0: 9\u00a0h\u00a000 dans quel fuseau horaire\u00a0? Sur un serveur Linux, il s\u2019agit g\u00e9n\u00e9ralement de l\u2019heure locale du serveur\u00a0; par cons\u00e9quent, la m\u00eame expression peut s\u2019ex\u00e9cuter \u00e0 une heure diff\u00e9rente de celle attendue par vos utilisateurs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><code>30 2 1 * *<\/code><\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">texte<code>30 2 1 * *<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Champ<\/th><th>Valeur<\/th><th>En lisant<\/th><\/tr><\/thead><tbody><tr><td>Minute<\/td><td><code>30<\/code><\/td><td>\u00c0 30 heures<\/td><\/tr><tr><td>Heure<\/td><td><code>2<\/code><\/td><td>2 heures<\/td><\/tr><tr><td>Jour du mois<\/td><td><code>1<\/code><\/td><td>Le 1er<\/td><\/tr><tr><td>Mois<\/td><td><code>*<\/code><\/td><td>Chaque mois<\/td><\/tr><tr><td>Jour de la semaine<\/td><td><code>*<\/code><\/td><td>Non restreint<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">En langage naturel\u00a0: \u00e0 2\u00a0h\u00a030 (2\u00a0h\u00a030 du matin) le premier jour de chaque mois. Attention aux fuseaux horaires\u00a0: les t\u00e2ches de facturation et de reporting mensuelles programm\u00e9es aux alentours de minuit ou lors du passage \u00e0 l\u2019heure d\u2019\u00e9t\u00e9\/d\u2019hiver sont les plus susceptibles d\u2019\u00eatre ex\u00e9cut\u00e9es \u00e0 une date incorrecte.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jour du mois vs. Jour de la semaine<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&#039;existence de ces deux champs \u201c\u00a0jour\u00a0\u201d s&#039;explique par le fait que les utilisateurs d\u00e9crivent les horaires de deux mani\u00e8res diff\u00e9rentes\u00a0: par date (\u201c\u00a0le 15\u00a0\u201d) et par jour de la semaine (\u00ab\u00a0tous les vendredis\u00a0\u00bb). Cron conserve les deux, et leur interaction repr\u00e9sente un v\u00e9ritable risque pour la production.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans les impl\u00e9mentations cron de style POSIX et les impl\u00e9mentations Linux courantes d\u00e9riv\u00e9es de Vixie\/Cronie, lorsque le jour du mois et le jour de la semaine sont tous deux restreints plut\u00f4t que <code>*<\/code>, une t\u00e2che peut s&#039;ex\u00e9cuter lorsque <strong>soit<\/strong> Les champs correspondent. D&#039;autres planificateurs peuvent utiliser une s\u00e9mantique diff\u00e9rente ou restreindre cette combinaison. La page de manuel Linux l&#039;indique clairement\u00a0: les commandes s&#039;ex\u00e9cutent lorsque les champs minute, heure et mois correspondent. <strong>et<\/strong> Au moins un des deux champs de jour correspond. POSIX d\u00e9crit la m\u00eame logique d&#039;alternative lorsque les deux champs de jour sont sp\u00e9cifi\u00e9s comme \u00e9l\u00e9ments ou listes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Regardez cette expression :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">texte<code>0 0 15 * 5<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sous Unix\/Linux, ce processus peut s&#039;ex\u00e9cuter \u00e0 minuit le 15 de chaque mois. <strong>et<\/strong> Tous les vendredis \u00e0 minuit. Cela ne signifie pas forc\u00e9ment \u201c\u00a0uniquement les vendredis 15\u00a0\u201d. En moyenne, cela repr\u00e9sente cinq ou six passages par mois, et non un seul.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">D&#039;autres plateformes divergent nettement sur ce point. Vercel Cron Jobs ne permet pas de d\u00e9finir simultan\u00e9ment les deux champs de jour\u00a0: lorsqu&#039;une valeur est renseign\u00e9e, l&#039;autre doit \u00eatre vide. <code>*<\/code>. AWS EventBridge Scheduler n\u00e9cessite un <code>?<\/code> dans un champ de jour lorsque l&#039;autre est sp\u00e9cifi\u00e9. Quartz utilise <code>?<\/code> dans le m\u00eame but.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recommandations plus s\u00fbres\u00a0:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Utiliser <code>*<\/code> en une journ\u00e9e sur le terrain, sauf si vous avez v\u00e9rifi\u00e9 le comportement souhait\u00e9 sur votre plateforme.<\/li>\n\n\n\n<li>Utilisez des t\u00e2ches distinctes ou une logique d&#039;application au sein de la t\u00e2che pour les r\u00e8gles de calendrier complexes telles que \u201c le troisi\u00e8me vendredi \u201d ou \u201c le dernier jour ouvrable \u201d.\u201d<\/li>\n\n\n\n<li>Validez l&#039;expression par rapport au planificateur et \u00e0 la version exacts que vous utiliserez pour le d\u00e9ploiement, et non par rapport \u00e0 une r\u00e9f\u00e9rence cron g\u00e9n\u00e9rale.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Fuseaux horaires et heure d&#039;\u00e9t\u00e9 de Cron<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Une expression cron ne prend pas en charge un fuseau horaire universel. Les cinq m\u00eames champs peuvent avoir trois significations diff\u00e9rentes selon l&#039;endroit o\u00f9 ils sont ex\u00e9cut\u00e9s\u00a0:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Heure locale du serveur.<\/strong> Un d\u00e9mon cron Linux \u00e9value les planifications par rapport \u00e0 l&#039;heure configur\u00e9e sur l&#039;h\u00f4te. Certaines impl\u00e9mentations cron Linux prennent \u00e9galement en charge un <code>CRON_TZ<\/code> variable qui d\u00e9finit un fuseau horaire pour une t\u00e2che cron sp\u00e9cifique, les horodatages des journaux \u00e9tant toujours tir\u00e9s du fuseau horaire local du d\u00e9mon. <code>CRON_TZ<\/code> comme sp\u00e9cifique \u00e0 l&#039;impl\u00e9mentation.<\/li>\n\n\n\n<li><strong>Une valeur par d\u00e9faut de la plateforme, telle que UTC.<\/strong> GitHub Actions ex\u00e9cute par d\u00e9faut les flux de travail planifi\u00e9s en UTC. Vercel Cron Jobs utilise toujours l&#039;UTC et ne propose pas de champ de fuseau horaire par t\u00e2che.<\/li>\n\n\n\n<li><strong>Un param\u00e8tre de fuseau horaire IANA explicite.<\/strong> <a href=\"https:\/\/en.wikipedia.org\/wiki\/Kubernetes\" rel=\"noopener\">Kubernetes<\/a> CronJob utilise <code>.spec.timeZone<\/code>. GitHub Actions accepte d\u00e9sormais une option <code>fuseau horaire<\/code> valeur associ\u00e9e \u00e0 une entr\u00e9e cron. EventBridge Scheduler peut \u00e9valuer les planifications cron en UTC ou dans un fuseau horaire que vous sp\u00e9cifiez. <code>@Programm\u00e9<\/code> a un <code>zone<\/code> cet attribut utilise par ailleurs la zone par d\u00e9faut du serveur.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Le passage \u00e0 l&#039;heure d&#039;\u00e9t\u00e9 engendre deux types de dysfonctionnements distincts, dont la gestion d\u00e9pend du planificateur. La documentation Linux classique de cron est claire \u00e0 ce sujet\u00a0: lors d&#039;un passage \u00e0 l&#039;heure d&#039;\u00e9t\u00e9, les heures locales inexistantes ne correspondent jamais, les t\u00e2ches correspondantes ne s&#039;ex\u00e9cutent donc pas\u00a0; de m\u00eame, lors d&#039;un passage \u00e0 l&#039;heure d&#039;hiver, les t\u00e2ches correspondantes s&#039;ex\u00e9cutent deux fois. GitHub Actions adopte une approche diff\u00e9rente pour les planifications prenant en compte les fuseaux horaires\u00a0: une heure manqu\u00e9e est report\u00e9e \u00e0 la prochaine heure valide, par exemple, une planification \u00e0 2\u00a0h\u00a030 est d\u00e9cal\u00e9e \u00e0 3\u00a0h\u00a000.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Conseils pratiques pour les travaux sensibles\u00a0:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pour la facturation, les rapports, les sauvegardes et les t\u00e2ches de conformit\u00e9, privil\u00e9giez le fuseau horaire UTC ou un fuseau horaire \u00e0 d\u00e9calage fixe, puis effectuez la conversion pour l&#039;affichage. Le fuseau horaire UTC ne comporte pas de changement d&#039;heure.<\/li>\n\n\n\n<li>Pour les messages destin\u00e9s aux clients qui doivent \u00eatre re\u00e7us \u00e0 une heure locale, utilisez une plateforme qui prend en charge un fuseau horaire IANA explicite et acceptez que l&#039;heure UTC change deux fois par an.<\/li>\n\n\n\n<li>\u00c9vitez de programmer des t\u00e2ches importantes entre 1 h et 3 h, heure locale, dans les zones appliquant l&#039;heure d&#039;\u00e9t\u00e9. Durant cette p\u00e9riode, les t\u00e2ches sont souvent ignor\u00e9es ou dupliqu\u00e9es.<\/li>\n\n\n\n<li>Consultez toujours un aper\u00e7u de la prochaine ex\u00e9cution avant le d\u00e9ploiement. Les aper\u00e7us r\u00e9v\u00e8lent les erreurs de d\u00e9calage d&#039;une heure et de date incorrecte qu&#039;une simple expression masque.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Exemple sp\u00e9cifique \u00e0 Kubernetes (et non \u00e0 la syntaxe g\u00e9n\u00e9rique des crontab)\u00a0:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">texte<code>apiVersion: batch\/v1 kind: CronJob metadata: name: nightly-report spec: schedule: &quot;0 2 * * *&quot; timeZone: &quot;Europe\/London&quot; jobTemplate: spec: template: spec: containers: - name: report image: your-registry\/report:1.0 restartPolicy: OnFailure<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kubernetes rejette <code>TZ<\/code> ou <code>CRON_TZ<\/code> une erreur de validation s&#039;est produite dans la cha\u00eene de planification\u00a0; le fuseau horaire doit donc \u00eatre saisi dans le <code>fuseau horaire<\/code> champ.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Exemple sp\u00e9cifique \u00e0 GitHub Actions (et non \u00e0 la syntaxe g\u00e9n\u00e9rique de crontab)\u00a0:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">texte<code>sur : planification : - cron : &#039;30 5 * * 1-5&#039; fuseau horaire : &quot;America\/New_York&quot;'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cela se d\u00e9roule \u00e0 5h30, heure de New York, du lundi au vendredi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Note de compatibilit\u00e9 Vercel\u00a0:<\/strong> Les t\u00e2ches Cron de Vercel utilisent cinq champs num\u00e9riques et les interpr\u00e8tent syst\u00e9matiquement en UTC, sans option de fuseau horaire. Si votre \u00e9quipe souhaite 9 h 00 \u00e0 Londres, vous devez calculer vous-m\u00eame l&#039;heure UTC et la v\u00e9rifier \u00e0 nouveau lors du passage \u00e0 l&#039;heure d&#039;\u00e9t\u00e9 britannique.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Formats Cron par plateforme<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Plateforme\/contexte<\/th><th>Format de champ typique<\/th><th>Approche par fuseau horaire<\/th><th>Note importante<\/th><\/tr><\/thead><tbody><tr><td>crontab utilisateur Unix\/Linux<\/td><td>Cinq champs, puis la commande<\/td><td>Heure locale de l&#039;h\u00f4te\u00a0; certaines impl\u00e9mentations la prennent en charge <code>CRON_TZ<\/code> par table<\/td><td>Le jour de la semaine accepte g\u00e9n\u00e9ralement les chiffres de 0 \u00e0 7, 0 ou 7 repr\u00e9sentant le dimanche, plus les noms.<\/td><\/tr><tr><td>crontab syst\u00e8me Unix\/Linux<\/td><td>Cinq champs, puis un nom d&#039;utilisateur, puis la commande<\/td><td>Identique au d\u00e9mon cron h\u00f4te<\/td><td>Le champ suppl\u00e9mentaire \u00ab nom d&#039;utilisateur \u00bb fait toute la diff\u00e9rence\u00a0; l&#039;omettre provoque un saut de ligne.<\/td><\/tr><tr><td>T\u00e2che planifi\u00e9e Kubernetes<\/td><td>Cinq champs dans <code>.spec.schedule<\/code>, avec les valeurs d&#039;\u00e9tape Vixie et <code>@<\/code>-macros<\/td><td><code>.spec.timeZone<\/code> avec un nom IANA\u00a0; sinon, la zone locale du contr\u00f4leur<\/td><td><code>?<\/code> se comporte comme <code>*<\/code>; <code>TZ<\/code>\/<code>CRON_TZ<\/code> sont rejet\u00e9s dans le calendrier<\/td><\/tr><tr><td>T\u00e2ches Cron Vercel<\/td><td>Cinq champs num\u00e9riques<\/td><td>Toujours en UTC, aucune option par t\u00e2che<\/td><td>Non <code>LUN<\/code>\/<code>JAN<\/code> Les alias, le jour du mois et le jour de la semaine ne peuvent pas \u00eatre d\u00e9finis simultan\u00e9ment.<\/td><\/tr><tr><td>Planification des actions GitHub<\/td><td>Cinq champs POSIX sous <code>programm\u00e9<\/code><\/td><td>UTC par d\u00e9faut\u00a0; IANA optionnel <code>fuseau horaire<\/code> valeur<\/td><td>L&#039;intervalle le plus court est de 5 minutes\u00a0; les courses peuvent \u00eatre retard\u00e9es en cas de forte charge.<\/td><\/tr><tr><td>Planificateur de quartz<\/td><td>Six ou sept champs, y compris les deuxi\u00e8mes et l&#039;ann\u00e9e optionnelle<\/td><td>Configur\u00e9 dans le planificateur\/d\u00e9clencheur, et non dans l&#039;expression<\/td><td><code>?<\/code>, <code>L<\/code>, <code>W<\/code>, et <code>#<\/code> Ce sont des jetons Quartz ; le jour de la semaine est de 1 \u00e0 7.<\/td><\/tr><tr><td>Autres planificateurs et biblioth\u00e8ques cloud<\/td><td>Variable\u00a0: EventBridge Scheduler utilise six champs avec l\u2019ann\u00e9e\u00a0; Printemps <code>@Programm\u00e9<\/code> utilise six champs commen\u00e7ant par secondes<\/td><td>EventBridge prend en charge UTC ou un fuseau horaire choisi\u00a0; Spring utilise un <code>zone<\/code> attribut<\/td><td>Consultez la documentation de la plateforme\u00a0; le nombre de champs et les r\u00e8gles relatives aux champs par jour diff\u00e8rent.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Tout \u00e9l\u00e9ment non r\u00e9pertori\u00e9 dans la documentation de votre plateforme doit \u00eatre consid\u00e9r\u00e9 comme non pris en charge jusqu&#039;\u00e0 ce que vous l&#039;ayez test\u00e9.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Erreurs courantes li\u00e9es \u00e0 Cron et leurs solutions<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Probl\u00e8me<\/th><th>Cause probable<\/th><th>Solution plus s\u00fbre<\/th><\/tr><\/thead><tbody><tr><td>Le planificateur rejette cat\u00e9goriquement l&#039;expression.<\/td><td>Une expression Quartz ou Spring \u00e0 six champs coll\u00e9e dans un planificateur \u00e0 cinq champs<\/td><td>Commencez par compter les champs\u00a0; r\u00e9\u00e9crivez pour le dialecte cible au lieu de supprimer aveugl\u00e9ment.<\/td><\/tr><tr><td>L&#039;expression fonctionne dans un service, mais \u00e9choue dans un autre.<\/td><td>En supposant que la syntaxe de cron soit universelle<\/td><td>V\u00e9rifiez le nombre de champs, les valeurs autoris\u00e9es et les caract\u00e8res sp\u00e9ciaux dans la documentation cible.<\/td><\/tr><tr><td>Le travail du week-end ne prend jamais feu<\/td><td>En supposant les deux <code>0<\/code> et <code>7<\/code> signifie toujours dimanche<\/td><td>POSIX utilise 0 pour le dimanche\u00a0; de nombreuses impl\u00e9mentations Linux acceptent \u00e9galement 7, mais la prise en charge varie, alors consultez la documentation de votre planificateur.<\/td><\/tr><tr><td>Le travail commence \u00e0 une heure indue<\/td><td>Ignorer le fuseau horaire du planificateur\u00a0; les plateformes fonctionnant uniquement en UTC sont courantes<\/td><td>D\u00e9finissez un fuseau horaire explicite lorsque cela est possible, ou convertissez-le d\u00e9lib\u00e9r\u00e9ment en UTC.<\/td><\/tr><tr><td>Emploi ignor\u00e9 ou dupliqu\u00e9 deux fois par an<\/td><td>Changements d&#039;heure\u00a0; cron classique ne correspond jamais aux heures saut\u00e9es et correspond deux fois aux heures doubl\u00e9es<\/td><td>Utilisez le fuseau horaire UTC pour les t\u00e2ches critiques, ou un planificateur qui documente son comportement en mati\u00e8re d&#039;heure d&#039;\u00e9t\u00e9.<\/td><\/tr><tr><td>La t\u00e2che s&#039;ex\u00e9cute beaucoup plus souvent que pr\u00e9vu.<\/td><td>Les deux champs de jour sont restreints, donc l&#039;un ou l&#039;autre peut correspondre.<\/td><td>Laisser un champ d&#039;un jour comme <code>*<\/code>, ou divis\u00e9s en emplois distincts<\/td><\/tr><tr><td>Les courses s&#039;accumulent de mani\u00e8re inattendue<\/td><td>Traitement <code>*\/5<\/code> en raison d&#039;un d\u00e9lai apr\u00e8s la fin de l&#039;ex\u00e9cution pr\u00e9c\u00e9dente<\/td><td>Les \u00e9tapes suivent l&#039;horloge\u00a0; utilisez un ordonnanceur \u00e0 d\u00e9lai fixe si vous avez besoin d&#039;une synchronisation bas\u00e9e sur des intervalles.<\/td><\/tr><tr><td>Les ex\u00e9cutions simultan\u00e9es corrompent les donn\u00e9es<\/td><td>La dur\u00e9e d&#039;ex\u00e9cution d\u00e9passe l&#039;intervalle pr\u00e9vu.<\/td><td>Encadrez la commande par un verrou, par exemple. <code>flock -n \/tmp\/job.lock \/chemin\/vers\/job.sh<\/code>; dans Kubernetes ensemble <code>concurrencyPolicy\u00a0: Interdire<\/code><\/td><\/tr><tr><td>Une t\u00e2che ponctuelle se d\u00e9clenche de mani\u00e8re r\u00e9p\u00e9t\u00e9e<\/td><td>Utilisation d&#039;une planification cron r\u00e9currente pour un \u00e9v\u00e9nement unique<\/td><td>Utilisez un m\u00e9canisme ponctuel tel qu&#039;une invocation planifi\u00e9e \u00e0 un instant pr\u00e9cis ou une t\u00e2che mise en file d&#039;attente<\/td><\/tr><tr><td>Des \u00e9checs silencieux que personne ne remarque<\/td><td>Aucun journal, alerte, nouvelle tentative ni idempotence<\/td><td>Redirigez la sortie standard et l&#039;erreur standard vers un journal, ajoutez des alertes et concevez des t\u00e2ches reproductibles en toute s\u00e9curit\u00e9.<\/td><\/tr><tr><td>Les identifiants se retrouvent dans les listes de processus et l&#039;historique.<\/td><td>Secrets saisis directement dans la ligne de commande crontab<\/td><td>Lire les secrets \u00e0 partir des variables d&#039;environnement ou d&#039;un gestionnaire de secrets dans le script<\/td><\/tr><tr><td>Un planning non test\u00e9 perturbe la production<\/td><td>D\u00e9ploiement direct sur la charge de travail r\u00e9elle<\/td><td>Commencez par tester avec une commande inoffensive, par exemple. <code>* * * * * \/bin\/date &gt;&gt; \/tmp\/cron-test.log 2&gt;&amp;1<\/code>, puis consultez le journal<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Deux points concernant la fiabilit\u00e9 m\u00e9ritent d&#039;\u00eatre soulign\u00e9s. Cron ne garantit pas des temps d&#039;ex\u00e9cution pr\u00e9cis\u00a0: GitHub Actions avertit que les workflows planifi\u00e9s peuvent \u00eatre retard\u00e9s en p\u00e9riode de forte charge et \u00eatre supprim\u00e9s de la file d&#039;attente. Kubernetes indique qu&#039;une t\u00e2che Cron cr\u00e9e un Job. <em>environ<\/em> Kubernetes pr\u00e9voit que deux t\u00e2ches (ou aucune) peuvent \u00eatre cr\u00e9\u00e9es \u00e0 chaque \u00e9ch\u00e9ance planifi\u00e9e. Vos t\u00e2ches doivent donc \u00eatre idempotentes. Kubernetes cesse \u00e9galement de d\u00e9marrer des t\u00e2ches apr\u00e8s plus de 100 \u00e9checs de planification et consigne une erreur. Il est donc important de pr\u00e9voir les retards, les doublons et les \u00e9checs plut\u00f4t que de supposer une synchronisation parfaite.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">G\u00e9n\u00e9rateur d&#039;expressions Cron<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hippotool d\u00e9veloppe un g\u00e9n\u00e9rateur interactif d&#039;expressions cron qui compl\u00e9tera ce guide. D\u00e8s son lancement, vous pourrez cr\u00e9er ou copier une planification, s\u00e9lectionner la plateforme cible, lire une explication en langage clair et pr\u00e9visualiser les prochaines ex\u00e9cutions planifi\u00e9es. En attendant, consultez notre [lien\/documentation]. <a href=\"https:\/\/frontend.hippotool.com\/\">terrain de jeu frontend<\/a> pr\u00e9visualisation HTML\/CSS et Javascript en direct.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les fonctions pr\u00e9vues pour l&#039;outil correspondent directement aux erreurs mentionn\u00e9es ci-dessus\u00a0:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le mode Unix\/Linux par d\u00e9faut utilise cinq champs\u00a0; le dialecte le plus s\u00fbr est donc le point de d\u00e9part.<\/li>\n\n\n\n<li>Un s\u00e9lecteur de plateforme et de dialecte prenant en charge Linux crontab, Kubernetes CronJob, Vercel, GitHub Actions et Quartz.<\/li>\n\n\n\n<li>Un g\u00e9n\u00e9rateur\/constructeur pour ceux qui pr\u00e9f\u00e8rent les listes d\u00e9roulantes \u00e0 la syntaxe brute<\/li>\n\n\n\n<li>Un analyseur syntaxique et un traducteur en langage clair pour les expressions que vous avez h\u00e9rit\u00e9es d&#039;une autre personne.<\/li>\n\n\n\n<li>Voici les 10 prochaines ex\u00e9cutions, pour que vous puissiez v\u00e9rifier visuellement la coh\u00e9rence du planning.<\/li>\n\n\n\n<li>Un s\u00e9lecteur de fuseau horaire IANA, avec UTC comme option explicite.<\/li>\n\n\n\n<li>Un bouton de copie pour des horaires de copier-coller propres<\/li>\n\n\n\n<li>Erreurs de validation indiquant le champ incrimin\u00e9<\/li>\n\n\n\n<li>Avertissement de non-concordance du nombre de champs lorsqu&#039;une expression \u00e0 six champs rencontre une cible \u00e0 cinq champs<\/li>\n\n\n\n<li>Un avertissement jour du mois\/jour de la semaine expliquant le comportement de correspondance \u00ab soit\/soit \u00bb.<\/li>\n\n\n\n<li>Avertissements sp\u00e9cifiques \u00e0 la plateforme, tels que la planification en UTC uniquement ou les alias de noms non pris en charge<\/li>\n\n\n\n<li>Aucune conversion silencieuse entre les formats Unix\/Linux et Quartz, car une r\u00e9\u00e9criture silencieuse masque les v\u00e9ritables diff\u00e9rences s\u00e9mantiques.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Avant sa mise en production, validez les expressions \u00e0 l&#039;aide des outils et de la documentation de votre planificateur, et confirmez le comportement avec une t\u00e2che de test inoffensive.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Foire aux questions<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">Qu&#039;est-ce qu&#039;une expression cron\u00a0?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Une expression cron est une cha\u00eene de caract\u00e8res qui indique au planificateur quand ex\u00e9cuter une t\u00e2che r\u00e9currente. Sous Unix et Linux, elle comporte cinq champs\u00a0: minute, heure, jour du mois, mois et jour de la semaine. Dans le crontab d&#039;un utilisateur, la commande \u00e0 ex\u00e9cuter suit ces cinq champs. Le nombre de champs et les r\u00e8gles varient selon les planificateurs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Que signifie <code>* * * * *<\/code> signifier?<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">texte<code>* * * * *<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Chaque champ est libre, ce qui permet de programmer l&#039;ex\u00e9cution \u00e0 chaque minute, chaque heure, chaque jour, chaque mois. En pratique, la t\u00e2che s&#039;ex\u00e9cute toutes les minutes, car cron sous Linux v\u00e9rifie ses entr\u00e9es \u00e0 chaque minute. Utilisez cette m\u00e9thode uniquement pour des t\u00e2ches courtes, peu co\u00fbteuses et compatibles avec les chevauchements. Certaines plateformes refusent les ex\u00e9cutions \u00e0 la minute\u00a0; GitHub Actions n&#039;autorise pas une ex\u00e9cution inf\u00e9rieure \u00e0 5\u00a0minutes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comment ex\u00e9cuter une t\u00e2che cron toutes les 5 minutes ?<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">texte<code>*\/5 * * * *<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le <code>\/<\/code> L&#039;op\u00e9rateur \u00ab\u00a0pas\u00a0\u00bb dans le champ \u00ab\u00a0minute\u00a0\u00bb s\u00e9lectionne les minutes 0, 5, 10, et ainsi de suite jusqu&#039;\u00e0 55. Il s&#039;agit d&#039;une s\u00e9lection bas\u00e9e sur l&#039;horloge, et non sur les intervalles\u00a0: si une s\u00e9quence dure sept minutes, la s\u00e9quence suivante commence toujours sur la grille de cinq minutes et peut se chevaucher. Ajoutez un verrou tel que\u00a0: <code>troupeau<\/code> si le chevauchement pouvait poser probl\u00e8me.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comment ex\u00e9cuter une t\u00e2che cron toutes les heures ?<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">texte<code>0 * * * *<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ce d\u00e9clencheur s&#039;active au d\u00e9but de chaque heure. Pour r\u00e9partir la charge au-del\u00e0 de la minute 0, choisissez une autre minute, par exemple\u00a0: <code>17 * * * *<\/code> pendant 17 minutes apr\u00e8s chaque heure. Pour un intervalle de plusieurs heures, utilisez un pas dans le champ horaire\u00a0: <code>0 *\/4 * * *<\/code> Les programmes s&#039;ex\u00e9cutent \u00e0 00h00, 04h00, 08h00, 12h00, 16h00 et 20h00 dans le fuseau horaire du planificateur.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comment programmer une t\u00e2che cron qui s&#039;ex\u00e9cute chaque jour \u00e0 une heure pr\u00e9cise\u00a0?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Indiquez la minute et l&#039;heure exactes dans les deux premiers champs et laissez les autres champs vides. <code>*<\/code>. Par exemple, <code>30 6 * * *<\/code> il a lieu tous les jours \u00e0 6h30 (6h30 du matin), et <code>45 23 * * *<\/code> Le programme s&#039;ex\u00e9cute quotidiennement \u00e0 23h45. L&#039;heure affich\u00e9e est comprise entre 0 et 23. Veuillez v\u00e9rifier le fuseau horaire utilis\u00e9 par le planificateur avant de vous fier \u00e0 l&#039;heure affich\u00e9e.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comment programmer une t\u00e2che cron en semaine\u00a0?<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">texte<code>0 9 * * 1-5<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La gamme <code>1-5<\/code> Le champ \u00ab\u00a0jour de la semaine\u00a0\u00bb couvre les jours de la semaine du lundi au vendredi, soit 9\u00a0h\u00a000 en semaine. POSIX num\u00e9rote ce champ de 0 \u00e0 6, 0 repr\u00e9sentant le dimanche. De nombreuses distributions Linux acceptent \u00e9galement les noms et la valeur 7 pour le dimanche. Quartz, quant \u00e0 lui, num\u00e9rote les jours de la semaine de 1 \u00e0 7\u00a0; par cons\u00e9quent, des chiffres identiques peuvent correspondre \u00e0 des jours diff\u00e9rents.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Quelle est la diff\u00e9rence entre un cron \u00e0 cinq champs et un cron \u00e0 six champs\u00a0?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le format standard Unix\/Linux pour les t\u00e2ches cron \u00e0 cinq champs est\u00a0: minute, heure, jour du mois, mois, jour de la semaine. Les variantes \u00e0 six champs ajoutent une unit\u00e9 suppl\u00e9mentaire. Quartz place les secondes en premier et propose un septi\u00e8me champ optionnel\u00a0: l\u2019ann\u00e9e. <code>@Programm\u00e9<\/code> Commence \u00e9galement par les secondes. AWS EventBridge Scheduler utilise six champs, le troisi\u00e8me repr\u00e9sentant l&#039;ann\u00e9e. Le nombre de champs n&#039;est pas interchangeable.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pourquoi ma t\u00e2che cron s&#039;ex\u00e9cute-t-elle au mauvais moment\u00a0?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La cause la plus fr\u00e9quente est un probl\u00e8me de fuseau horaire. L&#039;expression ne comporte pas de fuseau horaire propre\u00a0; elle peut donc \u00eatre \u00e9valu\u00e9e en heure locale du serveur, en heure par d\u00e9faut de la plateforme (comme UTC) ou en heure d\u00e9finie explicitement. Le passage \u00e0 l&#039;heure d&#039;\u00e9t\u00e9 ou \u00e0 l&#039;heure d&#039;hiver ajoute une heure de d\u00e9calage ou entra\u00eene l&#039;annulation d&#039;une ex\u00e9cution. Les d\u00e9lais de la plateforme constituent une autre cause\u00a0: les ex\u00e9cutions planifi\u00e9es peuvent \u00eatre report\u00e9es en cas de forte charge.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comment fonctionnent les fuseaux horaires de cron\u00a0?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">C&#039;est le planificateur qui d\u00e9cide, pas l&#039;expression. Sous Linux, cron utilise l&#039;heure de l&#039;h\u00f4te et certaines impl\u00e9mentations respectent une certaine contrainte de temps. <code>CRON_TZ<\/code> Variable par crontab. Lectures Kubernetes <code>.spec.timeZone<\/code>. GitHub Actions utilise par d\u00e9faut le fuseau horaire UTC, avec une option permettant d&#039;en choisir un autre. <code>fuseau horaire<\/code> Valeur. Vercel est toujours en UTC. D\u00e9finissez explicitement le fuseau horaire lorsque c&#039;est possible et pr\u00e9visualisez les prochaines ex\u00e9cutions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Puis-je utiliser la syntaxe cron dans Kubernetes\u00a0?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Oui, avec quelques r\u00e9serves. Une t\u00e2che CronJob Kubernetes utilise un calendrier \u00e0 cinq champs. <code>.spec.schedule<\/code>, prend en charge les valeurs de pas Vixie, accepte les macros telles que <code>@mensuel<\/code>, et des friandises <code>?<\/code> comme <code>*<\/code>. Le fuseau horaire appartient \u00e0 <code>.spec.timeZone<\/code>, et en mettant <code>TZ<\/code> ou <code>CRON_TZ<\/code> Une erreur de validation se produit si la cha\u00eene de planification est incorrecte. Concevez les t\u00e2ches de mani\u00e8re \u00e0 ce qu&#039;elles soient idempotentes, car des doublons sont possibles.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Puis-je utiliser la m\u00eame expression cron dans Vercel et Linux\u00a0?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Parfois, mais ne le tenez pas pour acquis. Vercel utilise cinq champs num\u00e9riques et rejette les alias tels que <code>LUN<\/code> et <code>JAN<\/code>, n\u00e9cessite <code>*<\/code> Dans un champ de jour, l&#039;autre est d\u00e9fini, et l&#039;horaire est toujours interpr\u00e9t\u00e9 en UTC. Une ligne crontab Linux utilisant des noms, les deux champs de jour ou l&#039;heure locale du serveur ne sera pas convertie correctement. V\u00e9rifiez l&#039;heure apr\u00e8s toute conversion UTC.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Qu&#039;est-ce qu&#039;une expression Quartz cron ?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Quartz utilise un dialecte \u00e9tendu de six ou sept champs s\u00e9par\u00e9s par des espaces\u00a0: secondes, minutes, heures, jour du mois, mois, jour de la semaine et une ann\u00e9e facultative. Il d\u00e9finit ses propres jetons, notamment <code>?<\/code> pour \u201c sans valeur sp\u00e9cifique \u201d, plus <code>L<\/code>, <code>W<\/code>, et <code>#<\/code> dans les champs de jour, et les chiffres du jour de la semaine de 1 \u00e0 7. Les expressions Quartz ne peuvent pas \u00eatre coll\u00e9es dans une crontab Unix\/Linux.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comment valider une expression cron avant de l&#039;utiliser\u00a0?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Proc\u00e9dez en trois \u00e9tapes. Premi\u00e8rement, comptez les champs et v\u00e9rifiez qu&#039;ils correspondent au format document\u00e9 de votre planificateur. Deuxi\u00e8mement, g\u00e9n\u00e9rez un aper\u00e7u de la prochaine ex\u00e9cution et comparez les dates et heures avec vos attentes, en tenant compte du fuseau horaire. Troisi\u00e8mement, ex\u00e9cutez la planification avec une commande de test qui se contente d&#039;\u00e9crire un horodatage dans un journal, v\u00e9rifiez les entr\u00e9es du journal, puis remplacez la commande par la commande r\u00e9elle.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion finale<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Identifiez le planificateur et son dialecte, indiquez le nombre de champs correct, puis v\u00e9rifiez le fuseau horaire que la planification utilisera. Pr\u00e9visualisez les prochaines ex\u00e9cutions et effectuez un d\u00e9ploiement \u00e0 l&#039;aide d&#039;une commande sans risque avant d&#039;associer des \u00e9l\u00e9ments importants \u00e0 la planification.<\/p>","protected":false},"excerpt":{"rendered":"<p>What Is a Cron Expression? A cron expression is a short schedule string that tells a scheduler when to start a recurring task. Standard Unix and Linux cron uses five time-and-date fields, in this fixed order: minute, hour, day of month, month, and day of week. A user crontab line places a command after those&#8230;<\/p>","protected":false},"author":1,"featured_media":452,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"unboxed","_kad_post_vertical_padding":"","_kad_post_feature":"hide","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[4],"tags":[],"class_list":["post-451","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"taxonomy_info":{"category":[{"value":4,"label":"Blog"}]},"featured_image_src_large":["https:\/\/hippotool.com\/wp-content\/uploads\/2026\/09\/Practical-Cron-Expression-Cheat-Sheet-Examples-Infographic-572x1024.webp",572,1024,true],"author_info":{"display_name":"A.Malik","author_link":"https:\/\/hippotool.com\/fr\/author\/abdullah410malikgmail-com\/"},"comment_info":0,"category_info":[{"term_id":4,"name":"Blog","slug":"blog","term_group":0,"term_taxonomy_id":4,"taxonomy":"category","description":"","parent":0,"count":26,"filter":"raw","cat_ID":4,"category_count":26,"category_description":"","cat_name":"Blog","category_nicename":"blog","category_parent":0}],"tag_info":false,"_links":{"self":[{"href":"https:\/\/hippotool.com\/fr\/wp-json\/wp\/v2\/posts\/451","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hippotool.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hippotool.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hippotool.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hippotool.com\/fr\/wp-json\/wp\/v2\/comments?post=451"}],"version-history":[{"count":1,"href":"https:\/\/hippotool.com\/fr\/wp-json\/wp\/v2\/posts\/451\/revisions"}],"predecessor-version":[{"id":453,"href":"https:\/\/hippotool.com\/fr\/wp-json\/wp\/v2\/posts\/451\/revisions\/453"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hippotool.com\/fr\/wp-json\/wp\/v2\/media\/452"}],"wp:attachment":[{"href":"https:\/\/hippotool.com\/fr\/wp-json\/wp\/v2\/media?parent=451"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hippotool.com\/fr\/wp-json\/wp\/v2\/categories?post=451"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hippotool.com\/fr\/wp-json\/wp\/v2\/tags?post=451"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}