Aide-mémoire Développement

Aide-mémoire de la syntaxe cron

Les cinq champs de cron, les caractères spéciaux, les raccourcis comme @daily et des planifications résolues avec leurs prochaines exécutions, plus les différences avec Quartz.

Dernière vérification :

AdSense Placeholder
Slot: header_reference_page
Sur cette page

Une expression cron est composée de cinq champs séparés par des espaces qui indiquent quand une tâche s'exécute ; dans une ligne de crontab, la commande vient ensuite. Les prochaines exécutions des exemples ont été calculées avec un petit script qui applique les règles de Vixie cron, à partir du samedi 10 octobre 2026 à 12:00. Collez des expressions numériques dans l'explicateur d'expressions cron pour les lire en langage courant.

Les cinq champs

┌───────────── minute        0-59
│ ┌─────────── hour          0-23
│ │ ┌───────── day of month  1-31
│ │ │ ┌─────── month         1-12 or jan-dec
│ │ │ │ ┌───── day of week   0-7 or sun-sat (0 and 7 are both Sunday)
│ │ │ │ │
* * * * *  /path/to/command

Dans l'ordre : minute, heure, jour du mois, mois et jour de la semaine (le dimanche vaut 0 ou 7).

Caractères spéciaux

Caractère Signification Exemple Se lit
* Toutes les valeurs * * * * * Chaque minute
, Liste 0 9,17 * * * À 09:00 et à 17:00
- Plage (bornes incluses) 0 9 * * 1-5 09:00 du lundi au vendredi
/ Pas */15 * * * * Toutes les 15 minutes (:00, :15, :30, :45)
a-b/n Pas dans une plage 0 8-18/2 * * * 08:00, 10:00 ... 18:00
noms Noms de mois ou de jour en anglais, sans distinction de casse (le cron Vixie classique n'accepte que des noms isolés, pas de listes ni de plages de noms) 0 4 * * sun 04:00 le dimanche

Les pas se comptent depuis le début de la plage, pas depuis l'horloge : */7 dans le champ des minutes se déclenche à :00, :07 ... :56 puis de nouveau à :00, soit un écart de 4 minutes.

Raccourcis

Raccourci Équivaut à S'exécute
@reboot (aucun) Une fois, au démarrage du démon cron
@yearly, @annually 0 0 1 1 * À minuit le 1er janvier
@monthly 0 0 1 * * À minuit le 1er du mois
@weekly 0 0 * * 0 À minuit entre le samedi et le dimanche
@daily, @midnight 0 0 * * * Chaque nuit à minuit
@hourly 0 * * * * À la minute 0 de chaque heure

Exemples résolus

Expression Signification Prochaines exécutions depuis le sam. 10/10/2026 12:00
*/15 * * * * Toutes les 15 minutes 12:15, 12:30, 12:45, 13:00
0 * * * * Chaque heure pile 13:00, 14:00, 15:00
0 */6 * * * Toutes les 6 heures sam. 18:00, dim. 00:00, dim. 06:00
0 9 * * 1-5 09:00 en semaine lun. 12 oct., mar. 13 oct., mer. 14 oct.
*/10 9-17 * * 1-5 Toutes les 10 minutes aux heures de bureau lun. 12 oct. 09:00, 09:10, 09:20
0 22 * * 1-5 22:00 du lundi au vendredi lun. 12 oct., mar. 13 oct.
30 2 * * 0 02:30 chaque dimanche dim. 11 oct., dim. 18 oct., dim. 25 oct.
0 0 * * 6,0 Minuit le week-end dim. 11 oct., sam. 17 oct., dim. 18 oct.
0 12 1,15 * * Midi les 1er et 15 jeu. 15 oct., dim. 1er nov., dim. 15 nov.
0 0 1 * * Minuit le 1er de chaque mois dim. 1er nov., mar. 1er déc., ven. 1er janv. 2027
0 0 1 1,7 * Deux fois par an ven. 1er janv. 2027, jeu. 1er juil. 2027
0 0 29 2 * Le 29 février uniquement mar. 29 févr. 2028, dim. 29 févr. 2032
0 0 13 * 5 Le 13 ou n'importe quel vendredi mar. 13 oct., ven. 16 oct., ven. 23 oct.

Vixie cron et Quartz

Linux et macOS utilisent Vixie cron ou ses descendants (cronie, le cron de Debian). Le planificateur Quartz de Java, et les outils qui s'appuient dessus, emploient un format voisin mais non interchangeable.

Fonctionnalité Vixie / cron standard Quartz
Champs 5 : minute heure jour mois jour-semaine 6 ou 7 : seconde minute heure jour mois jour-semaine [année]
Numéros du jour de la semaine 0-7, dimanche = 0 ou 7 1-7, dimanche = 1
Les deux champs de jour renseignés S'exécute si l'un ou l'autre correspond Interdit : l'un des deux doit être ?
? Non pris en charge « Pas de valeur précise » pour le jour du mois ou de la semaine
L Non pris en charge Dernier : L pour le jour du mois = dernier jour, 6L = dernier vendredi
W Non pris en charge Jour ouvré le plus proche : 15W
# Non pris en charge N-ième jour de la semaine : 6#3 = troisième vendredi
Raccourcis @daily et assimilés Non pris en charge
Jours ouvrés à 09:00 0 9 * * 1-5 0 0 9 ? * MON-FRI

Certaines bibliothèques (comme croniter et de nombreux ordonnanceurs de CI) acceptent aussi L et # dans des expressions à cinq champs, mais les démons cron simples non ; vérifiez avant de vous y fier.

Conseils pour la crontab

  • Modifiez avec crontab -e et listez avec crontab -l. Les crontabs système, dans /etc/crontab et /etc/cron.d/, comportent un champ utilisateur supplémentaire avant la commande.
  • Utilisez des chemins complets. Cron s'exécute avec un PATH minimal et sans shell de connexion.
  • Échappez le %. Dans une ligne de crontab, un % non échappé termine la commande et ouvre son entrée standard : écrivez date +\%F.
  • Conservez la sortie. Ajoutez >> /var/log/job.log 2>&1 ou définissez MAILTO= pour la recevoir par courriel.
  • Attention au fuseau horaire. Convertissez une planification pour une autre région avec le calculateur de fuseaux horaires.

Essayez ces outils

Voir aussi

  • Glossaire Cron
    Cron est le planificateur des systèmes de type Unix qui exécute automatiquement des commandes aux heures définies par une expression de.
  • Glossaire UTC (temps universel coordonné)
    UTC est la norme de temps de référence mondiale à partir de laquelle tous les fuseaux horaires sont définis comme des décalages.
  • Aide-mémoire Aide-mémoire de la ligne de commande Linux
    Commandes de terminal pour fichiers, recherche, texte, processus, disque, réseau et archives, plus tubes, redirections.
  • Aide-mémoire Formats de date et d'heure
    Motifs ISO 8601, codes strftime, unités de l'heure Unix et les pièges des années bissextiles, des semaines et de l'heure d'été.

Questions fréquemment posées

Dans le cron standard, quand le jour du mois et le jour de la semaine sont tous deux restreints, la tâche s'exécute lorsque l'un ou l'autre correspond. 0 0 13 * 5 s'exécute chaque 13 du mois et chaque vendredi, pas seulement le vendredi 13.

Le fuseau local du système, sauf si la crontab en définit un (par exemple CRON_TZ=UTC avec cronie). Lors des changements d'heure, les tâches planifiées dans l'heure sautée ou répétée peuvent être ignorées ou s'exécuter deux fois : planifiez les tâches importantes en dehors de la plage 01:00-03:00 ou faites tourner le serveur en UTC.

AdSense Placeholder
Slot: footer_leaderboard