alltools.one
DevOps
2026-02-25
11 min
alltools.one Team
cronschedulingdevopsautomationlinux

Aide-Mémoire des Expressions Cron — Planifiez vos Tâches comme un Pro

Cron est l'épine dorsale de l'automatisation des tâches planifiées sur les systèmes Unix. Que vous fassiez la rotation des logs, exécutiez des sauvegardes de base de données ou déclenchiez des pipelines CI/CD, les expressions cron définissent quand ces tâches s'exécutent. La syntaxe est compacte mais puissante — et facile à mal configurer si vous devinez.

Cette référence couvre chaque élément de la syntaxe cron avec des exemples pratiques prêts à copier-coller. Si vous souhaitez construire et valider des expressions de manière interactive, ouvrez le Constructeur d'Expressions Cron à côté de ce guide.

Syntaxe Cron : Les cinq champs

Une expression cron standard se compose de cinq 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, où 0 et 7 = Dimanche)
│ │ │ │ │
* * * * *

Chaque champ accepte une valeur spécifique, une plage, une liste ou un caractère générique. Ensemble, les cinq champs spécifient un calendrier récurrent exact.

ChampValeurs autoriséesCaractères spéciaux
Minute0–59* , - /
Heure0–23* , - /
Jour du mois1–31* , - /
Mois1–12* , - /
Jour de la semaine0–7* , - /

Les champs mois et jour de la semaine acceptent également des abréviations de trois lettres (JANDEC, SUNSAT) dans la plupart des implémentations.

Caractères spéciaux expliqués

Comprendre quatre caractères spéciaux déverrouille toute la puissance de cron :

Astérisque * — « Chaque »

Correspond à chaque valeur possible pour ce champ.

* * * * *    # Chaque minute de chaque heure de chaque jour

Virgule , — « Et »

Spécifie une liste de valeurs discrètes.

0 9,12,18 * * *    # À 9h00, 12h00 et 18h00 quotidiennement

Tiret - — « Jusqu'à »

Définit une plage inclusive.

0 9-17 * * *    # Chaque heure de 9h à 17h

Barre oblique / — « Tous les n »

Définit un intervalle de pas depuis le début de la plage.

*/10 * * * *    # Toutes les 10 minutes (0, 10, 20, 30, 40, 50)

Vous pouvez combiner une plage avec un pas :

0 9-17/2 * * *    # Toutes les 2 heures de 9h à 17h (9, 11, 13, 15, 17)

Exemples courants de planification Cron

Mettez cette table en favoris. Ce sont les planifications que vous utiliserez encore et encore.

PlanificationExpressionExplication
Chaque minute* * * * *S'exécute au début de chaque minute
Toutes les 5 minutes*/5 * * * *Minutes 0, 5, 10, 15, …, 55
Toutes les 15 minutes*/15 * * * *Minutes 0, 15, 30, 45
Chaque heure0 * * * *À la minute 0 de chaque heure
Toutes les 6 heures0 */6 * * *À 00:00, 06:00, 12:00, 18:00
Quotidiennement à minuit0 0 * * *Une fois par jour à 00:00
Quotidiennement à 3h0 3 * * *Une fois par jour à 03:00
Chaque lundi à 9h0 9 * * 1Hebdomadaire le lundi à 09:00
Chaque jour ouvrable à 8h0 8 * * 1-5Lundi à vendredi à 08:00
Chaque week-end à midi0 12 * * 0,6Samedi et dimanche à 12:00
Premier de chaque mois0 0 1 * *Minuit le 1er de chaque mois
Chaque trimestre (Jan, Avr, Jul, Oct)0 0 1 1,4,7,10 *Minuit le 1er des mois trimestriels
Toutes les 15 min en heures ouvrables*/15 9-17 * * 1-5Jours ouvrables, 9h–17h, toutes les 15 min

Collez n'importe quelle expression dans le Constructeur d'Expressions Cron pour visualiser les prochains moments d'exécution.

Patterns avancés

Combiner listes et plages

Les champs acceptent une syntaxe mixte. Pour exécuter une tâche à 8h et 18h les jours ouvrables :

0 8,18 * * 1-5

Pour cibler des mois spécifiques avec un pas :

0 0 1 1-12/3 *    # Tous les 3 mois à partir de janvier (Jan, Avr, Jul, Oct)

Jour du mois vs. Jour de la semaine

Quand le jour du mois et le jour de la semaine sont tous deux définis (pas *), le comportement dépend de l'implémentation. Dans le cron standard, la tâche s'exécute si l'une ou l'autre condition est remplie — c'est une relation OU, pas ET. Cela surprend beaucoup de monde.

0 0 15 * 1    # S'exécute le 15 ET chaque lundi — pas "le lundi 15"

Exécution au démarrage

Bien que ce ne soit pas une expression cron à proprement parler, @reboot est un raccourci largement supporté :

@reboot /usr/local/bin/start-service.sh

Autres raccourcis courants :

RaccourciÉquivalent
@yearly0 0 1 1 *
@monthly0 0 1 * *
@weekly0 0 * * 0
@daily0 0 * * *
@hourly0 * * * *

Cron dans différents environnements

La syntaxe à cinq champs est universelle, mais la façon de configurer cron varie selon la plateforme.

Crontab Linux

Le classique. Éditez votre crontab utilisateur avec crontab -e :

# Exécuter la sauvegarde tous les jours à 2h
0 2 * * * /home/user/scripts/backup.sh >> /var/log/backup.log 2>&1

Les tâches cron système dans /etc/cron.d/ incluent un champ utilisateur supplémentaire :

0 2 * * * root /usr/local/bin/cleanup.sh

GitHub Actions

GitHub Actions utilise la même syntaxe à cinq champs dans un déclencheur schedule. Tous les horaires sont en UTC.

on:
  schedule:
    - cron: '0 3 * * 1-5'   # Jours ouvrables à 3h UTC

Pour une exploration approfondie de la configuration YAML, consultez YAML pour Kubernetes et YAML pour Docker Compose.

Kubernetes CronJob

Kubernetes encapsule les expressions cron dans une ressource CronJob :

apiVersion: batch/v1
kind: CronJob
metadata:
  name: nightly-report
spec:
  schedule: "0 2 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
            - name: report
              image: reporting:latest
              command: ["python", "generate_report.py"]
          restartPolicy: OnFailure

Kubernetes utilise UTC par défaut. À partir de la v1.25, vous pouvez définir timeZone: "America/New_York" dans la spécification du CronJob.

AWS CloudWatch (EventBridge)

AWS utilise une syntaxe légèrement différente avec six champs (ajout des secondes) et les enveloppes rate() / cron() :

cron(0 3 * * ? *)    # Quotidiennement à 3h UTC

Notez le caractère ? — AWS l'exige pour le jour du mois ou le jour de la semaine quand l'autre est spécifié. C'est différent du cron standard.

Pièges courants

1. Confusion des fuseaux horaires

Cron utilise le fuseau horaire du système sous Linux, mais Kubernetes et GitHub Actions s'exécutent en UTC. Une tâche planifiée à 0 9 * * * se déclenchera à 9h UTC, soit 10h heure de Paris.

Vérifiez toujours quel fuseau horaire votre planificateur utilise. Pour les conversions d'horodatages, notre guide Horodatage Unix expliqué couvre les décalages UTC en détail.

2. Exécutions qui se chevauchent

Si une tâche prend plus de temps que l'intervalle entre les exécutions, vous obtiendrez des instances qui se chevauchent. Un script qui s'exécute pendant 8 minutes sur un planning */5 * * * * va s'empiler.

Solutions :

  • Utilisez un fichier verrou (flock sous Linux)
  • Définissez concurrencyPolicy: Forbid dans les CronJobs Kubernetes
  • Vérifiez les instances en cours au début de votre script

3. Sortie manquante et débogage

Cron ne capture pas stdout par défaut. Redirigez toujours la sortie :

*/5 * * * * /path/to/script.sh >> /var/log/myjob.log 2>&1

Si une tâche cron ne s'exécute pas, vérifiez :

  • grep CRON /var/log/syslog pour les logs d'exécution
  • Les permissions de fichier du script
  • La variable d'environnement PATH — cron a un PATH minimal par défaut

4. Le piège du « 31 de chaque mois »

0 0 31 * *    # Ne s'exécute que dans les mois ayant 31 jours

Cela s'exécute en janvier, mars, mai, juillet, août, octobre et décembre — mais saute silencieusement les cinq autres mois. Si vous avez besoin d'une tâche de fin de mois, envisagez de l'exécuter le 1er et d'ajuster la logique de votre script, ou utilisez un outil qui supporte la sémantique « dernier jour du mois ».

5. Oublier le saut de ligne à la fin du crontab

Certaines implémentations de cron nécessitent un saut de ligne en fin de fichier crontab. Si votre dernière entrée ne s'exécute pas, ajoutez une ligne vide à la fin.

Construire des expressions visuellement

Mémoriser la syntaxe fonctionne pour les patterns courants, mais les planifications complexes sont plus faciles à construire visuellement. Le Constructeur d'Expressions Cron sur alltools.one vous permet de :

  • Sélectionner des valeurs pour chaque champ via des menus déroulants
  • Voir une description lisible de la planification
  • Prévisualiser les prochains moments d'exécution
  • Copier l'expression finale en un clic

Il s'exécute entièrement dans votre navigateur — aucune donnée n'est envoyée à un serveur.

Carte de référence rapide

Copiez ce bloc dans la documentation de votre projet ou le wiki de votre équipe :

# ┌───── min (0-59)
# │ ┌───── heure (0-23)
# │ │ ┌───── jour du mois (1-31)
# │ │ │ ┌───── mois (1-12)
# │ │ │ │ ┌───── jour de la semaine (0-7, Dim=0 ou 7)
# │ │ │ │ │
# * * * * *

*/5 * * * *        # Toutes les 5 minutes
0 * * * *          # Chaque heure
0 0 * * *          # Quotidiennement à minuit
0 9 * * 1-5        # Jours ouvrables à 9h
0 0 1 * *          # Premier du mois
*/15 9-17 * * 1-5  # Toutes les 15 min, heures ouvrables

Pour aller plus loin


Prêt à construire votre prochaine expression cron ? Ouvrez le Constructeur d'Expressions Cron et définissez votre planification correctement dès la première fois.

Published on 2026-02-25
Cron Expression Cheat Sheet — Schedule Like a Pro | alltools.one