OneKitTools logoOneKitTools
developer4 min de lecture

"Expressions cron expliquées : du basique aux planifications avancées"

Qu'est-ce qu'une expression cron ? Apprenez la syntaxe, les champs et les caractères spéciaux — avec des exemples concrets pour les planifications courantes comme "tous les jours à minuit" ou "tous les lundis à 9h".

OneKitTools Team14 avril 2026

Qu'est-ce qu'une expression cron ?

Cron est un planificateur de tâches basé sur le temps, intégré aux systèmes Unix/Linux. Une expression cron est la syntaxe qui indique à cron quand exécuter une tâche.

Tu les as déjà vus : 0 0 * * *. Ça veut dire "à minuit, tous les jours." Mais dès qu'on dépasse les bases, la syntaxe cron devient vite complexe — 5 champs, secondes optionnelles, différences entre plateformes, et caractères spéciaux que la plupart des gens copient-collent sans comprendre.

Ce guide démystifie tout ça.

Les 5 (ou 6) champs

Le cron standard utilise 5 champs séparés par des espaces :

┌──────────── minute (0–59) │ ┌────────── heure (0–23) │ │ ┌──────── jour du mois (1–31) │ │ │ ┌────── mois (1–12) │ │ │ │ ┌──── jour de la semaine (0–7, 0 et 7 = dimanche) │ │ │ │ │ * * * * *

Certains systèmes (AWS EventBridge, Spring, Quartz) ajoutent un champ secondes au début, ce qui donne 6 champs. Vérifie ta plateforme.

Caractères spéciaux

CaractèreSignificationExemple
*Toutes les valeurs* * * * * = chaque minute
,Valeurs multiples0 9,17 * * * = 9h et 17h
-Plage0 9-17 * * * = chaque heure de 9h à 17h
/Pas*/15 * * * * = toutes les 15 minutes
LDernier0 0 L * * = dernier jour du mois (Quartz uniquement)
?Sans valeur0 0 ? * MON = lundis, n'importe quel jour du mois (Quartz)

Expressions cron courantes

Chaque minute

* * * * *

Toutes les 5 minutes

*/5 * * * *

Chaque heure, pile

0 * * * *

Tous les jours à minuit

0 0 * * *

Tous les jours à 9h

0 9 * * *

Tous les lundis à 9h

0 9 * * 1

Tous les jours de semaine (lun–ven) à 8h

0 8 * * 1-5

Chaque week-end à midi

0 12 * * 0,6

Premier jour de chaque mois à minuit

0 0 1 * *

Chaque trimestre (jan, avr, juil, oct) à minuit

0 0 1 1,4,7,10 *

Toutes les 30 minutes entre 9h et 17h en semaine

*/30 9-17 * * 1-5

Les pièges

"Toutes les 2 heures" c'est 0 */2 * * *, pas */2 * * * *

*/2 * * * * signifie toutes les 2 minutes. Le pas s'applique au champ dans lequel il se trouve.

Dimanche c'est 0 ET 7

En cron standard, 0 et 7 correspondent tous deux au dimanche. Évite l'ambiguïté — utilise 0 de façon constante.

Jour du mois ET jour de la semaine sont en OU, pas en ET

0 0 1 * 1 s'exécute le 1er de chaque mois ET chaque lundi — pas uniquement les lundis qui tombent le 1er. Si tu veux "le premier lundi du mois", c'est plus complexe (nécessite une logique de script en dehors de cron).

Les fuseaux horaires

Cron s'exécute dans le fuseau horaire local du serveur, sauf configuration contraire. Une tâche à 0 9 * * * sur un serveur UTC s'exécute à 9h UTC — soit potentiellement 2h ou 23h dans ton fuseau.

Toujours vérifier :

timedatectl   # affiche le fuseau horaire actuel sous Linux

Raccourcis nommés (non standard mais très supportés)

RaccourciÉquivalentSignification
@yearly0 0 1 1 *Une fois par an
@monthly0 0 1 * *Une fois par mois
@weekly0 0 * * 0Une fois par semaine (dimanche)
@daily0 0 * * *Une fois par jour (minuit)
@hourly0 * * * *Une fois par heure
@rebootAu démarrage du système

Générer et valider des expressions cron

Cron Generator permet de construire des expressions visuellement — choisir la planification en langage clair, obtenir l'expression cron. Plus besoin de deviner si 0 9 * * 1-5 est correct.

Fonctionne aussi en sens inverse : colle n'importe quelle expression cron et obtiens une explication en français de quand elle s'exécute.

Mémo rapide

# ┌──── minute 0-59 # │ ┌─── heure 0-23 # │ │ ┌── jour 1-31 # │ │ │ ┌─ mois 1-12 # │ │ │ │ ┌ semaine 0-7 (0=dim) # │ │ │ │ │ * * * * * chaque minute 0 * * * * chaque heure 0 0 * * * tous les jours à minuit 0 9 * * 1 tous les lundis à 9h */15 * * * * toutes les 15 minutes 0 0 1 * * premier jour de chaque mois
Partager