araç köşesi

Traduire une expression cron : une ligne crontab en phrase claire

Voyez quand une expression cron s'exécute : une phrase en français, le détail champ par champ et la liste des prochaines exécutions

Vos données restent chez vous. La conversion se fait dans le navigateur ; rien n'est envoyé à un serveur.

Comment ça marche

Cron est le planificateur qui lance une tâche sur un serveur à heures fixes ; l'écran « Tâches cron » d'un panneau d'hébergement (cPanel, Plesk) demande exactement la même expression. Une expression standard compte cinq champs : minute, heure, jour du mois, mois et jour de la semaine. Collez à gauche une expression que vous avez écrite ou copiée d'un tutoriel ; à droite, une phrase indique quand elle s'exécute. Par exemple « */15 9-17 * * 1-5 » devient « Toutes les 15 minutes, entre 09:00 et 17:59, du lundi au vendredi », suivi des premières exécutions à venir (13:15, 13:30 …). Une commande en fin de ligne (comme /home/utilisateur/sauvegarde.sh) est affichée à part ; les commentaires commençant par # et les réglages comme MAILTO= sont ignorés, vous pouvez donc coller toute la sortie de crontab -l. Les dates suivent l'horloge de votre appareil. Beaucoup de serveurs tournent en UTC : l'Algérie et la Tunisie sont à UTC+1, la France à UTC+1 (UTC+2 en été), donc « 0 9 * * * » sur un serveur UTC part à 10 h (ou 11 h l'été à Paris).

Cet outil est aussi connu sous le nom de expression cron, expression cron online, crontab toutes les 5 minutes, expression cron quartz, comprendre une crontab.

Qu'est-ce que Cron ?

Cron est le service qui tourne en arrière-plan sur les serveurs Linux et Unix et lance une tâche à la minute prévue, sans intervention. Il prend en charge les travaux répétitifs : sauvegardes, vidage d'une file d'e-mails, rapport quotidien d'un site web. L'écran « Tâches cron » d'un panneau d'hébergement n'est qu'un formulaire qui ajoute des lignes à ce service.

Qu'est-ce que Crontab ?

La crontab (cron table) est le fichier texte qui contient les tâches planifiées d'un utilisateur ; on la modifie avec crontab -e et on l'affiche avec crontab -l. Chaque ligne comporte cinq champs horaires suivis de la commande à lancer. Les lignes commençant par # sont des commentaires, et des lignes comme MAILTO= règlent par exemple qui reçoit la sortie par e-mail.

Quelle est la différence entre cron Linux et cron Quartz ?

Cron sous Linux a cinq champs et travaille à la minute près ; Quartz (et Spring en Java) ajoute en tête un champ des secondes, ce qui permet des planifications comme « toutes les 10 secondes ». Quartz connaît aussi un champ facultatif pour l'année, L pour le dernier jour du mois, W pour le jour ouvré le plus proche et # pour « le 2e lundi du mois ». La différence qui cause le plus d'erreurs est la numérotation des jours : dans Quartz 1 est dimanche, sous Linux 1 est lundi.

Jour du mois et jour de la semaine ensemble : la règle du OU

La plupart des gens lisent « 0 0 1,15 * 1 » comme « le 1er et le 15, s'ils tombent un lundi ». Cron sous Linux ne fonctionne pas ainsi : quand le jour du mois et le jour de la semaine sont tous deux restreints, la tâche s'exécute dès que L'UN des deux correspond. Cette ligne s'exécute donc à minuit le 1er, le 15 et en plus chaque lundi. L'outil écrit alors « ou » dans la phrase et ajoute une remarque.

Il y a une exception : si un champ commence par un astérisque (comme « */2 »), cron le considère comme non restreint et exige alors que les deux champs correspondent. « 0 0 */2 * 1 » signifie donc « les jours impairs qui tombent un lundi ». Certaines bibliothèques JavaScript ignorent ce détail ; cette page suit le service cron réellement installé sous Linux (cronie, Vixie cron). Spring fait l'inverse : les deux champs doivent toujours correspondre.

Linux, Spring ou Quartz : quelle syntaxe utilisez-vous ?

L'écran Tâches cron de votre hébergeur, la crontab d'un serveur Linux, les CronJobs Kubernetes et GitHub Actions utilisent la syntaxe Linux à cinq champs. En Java, l'expression @Scheduled de Spring ajoute un champ des secondes en tête et exige six champs. Quartz commence aussi par les secondes, accepte un septième champ facultatif pour l'année, impose « ? » dans le jour du mois ou le jour de la semaine et numérote les jours à partir de 1 : dans Quartz 1 est dimanche et 2 lundi, alors que sous Linux et Spring 1 est lundi.

La détection automatique regarde le nombre de champs et les symboles : « ? », « L », « W » ou « # » indiquent Quartz, six champs Spring, cinq champs Linux. La syntaxe retenue est écrite dans le résultat. Comme le dernier mot d'une ligne Linux de six mots peut être une commande (« 0 5 * * * sauvegarde.sh »), choisissez la syntaxe à la main en cas de doute ; un numéro de jour lu dans la mauvaise syntaxe se décale d'un jour.

Expressions cron courantes

Ces lignes couvrent les planifications les plus recherchées ; copiez-en une dans le panneau de gauche pour voir ses prochaines exécutions, puis adaptez-la à vos horaires.

  • */5 * * * * — toutes les 5 minutes
  • 0 * * * * — toutes les heures pile
  • 0 3 * * * — chaque nuit à 03:00
  • 30 8 * * 1-5 — du lundi au vendredi à 08:30
  • 0 9 * * 1 — chaque lundi à 09:00
  • 0 0 1 * * — le 1er de chaque mois à minuit (@monthly)
  • 0 0 1 1 * — chaque 1er janvier à minuit (@yearly)

Questions fréquentes

Comment lire une expression cron ?

De gauche à droite, il y a cinq champs : minute (0-59), heure (0-23), jour du mois (1-31), mois (1-12) et jour de la semaine (0-7 ; 0 et 7 sont le dimanche). L'astérisque veut dire « toutes les valeurs », la virgule fait une liste (1,15), le tiret une plage (9-17), la barre oblique un pas (*/15 = toutes les 15). « 30 2 * * * » signifie chaque jour à 02:30.

Comment écrire une tâche cron toutes les 5 minutes ?

Écrivez « */5 * * * * ». Le */5 du champ des minutes déclenche aux minutes 0, 5, 10 … 55. Pour la limiter aux heures de bureau, restreignez aussi l'heure : « */5 9-18 * * * ».

Pourquoi ma tâche cron ne s'exécute-t-elle pas à l'heure prévue ?

Le plus souvent, c'est le fuseau horaire : si le serveur est en UTC, « 0 9 * * * » part à 10 h à Alger ou à Tunis. Vérifiez l'heure du serveur avec la commande date ou décalez l'expression de la différence. Deuxième cause fréquente : jour du mois et jour de la semaine remplis ensemble, cron se contente alors de l'un des deux.

Que signifient @daily et @reboot dans une crontab ?

@daily (ou @midnight) équivaut à « 0 0 * * * » : chaque jour à minuit. @hourly, @weekly, @monthly et @yearly sont des raccourcis du même type. @reboot ne dépend pas du calendrier : il s'exécute une fois à chaque démarrage du serveur ou du service cron, aucune prochaine exécution ne peut donc être calculée.