Syntaxe Cron

Une ligne de cron se compose de 5 champs de temps suivis par la commande à exécuter :


* * * * * command_to_execute
│ │ │ │ │
│ │ │ │ └─ Jour de la semaine (0-7, 0 ou 7 = dimanche)
│ │ │ └── Mois (1-12)
│ │ └── Jour du mois (1-31)
│ └── Heure (0-23)
└── Minute (0-59)

Exemples pratiques :


0 8 * * *           → tous les jours à 08:00
30 13 * * *         → tous les jours à 13:30
9,19,29,39,49,59 7-18 * * * → toutes les heures de 7h à 18h aux minutes 9,19,29,39,49,59
* * * * *           → toutes les minutes, tous les jours
0 9 * * 1           → tous les lundis à 09:00
0 9 * * 1,3,5       → tous les lundis, mercredis et vendredis à 09:00
0 9 * * 0-6         → tous les jours de la semaine à 09:00

Les champs peuvent contenir :

  • * → toutes les valeurs possibles
  • 5,10,15 → valeurs spécifiques séparées par des virgules
  • 1-5 → plage de valeurs

Exemple combiné :


# Exécuter le script backup.sh tous les lundis à 02:30
30 2 * * 1 /home/user/backup.sh

Différence entre /etc/crontab et les crons utilisateurs

/etc/crontab est le cron système. Chaque ligne comporte un champ supplémentaire pour le nom d'utilisateur :


# Cron système
Minute Heure Jour_du_mois Mois Jour_semaine Utilisateur Commande
0 5 * * * root /usr/local/bin/script.sh

Les crons utilisateurs (édités avec crontab -e) n’incluent pas le champ utilisateur :


# Cron utilisateur
Minute Heure Jour_du_mois Mois Jour_semaine Commande
0 5 * * * /home/user/script.sh

Créer ou éditer un cron sous Rocky Linux 9

  • Crons utilisateurs :
    crontab -e
  • Lister les crons utilisateurs :
    crontab -l
  • Supprimer tous les crons utilisateurs :
    crontab -r
  • Crons système : Éditez le fichier /etc/crontab ou créez un fichier dans /etc/cron.d/ :
    sudo nano /etc/crontab
  • Répertoires de crons périodiques :
    
    /etc/cron.hourly/
    /etc/cron.daily/
    /etc/cron.weekly/
    /etc/cron.monthly/
  • Redémarrage du démon cron (si nécessaire) :
    sudo systemctl restart crond

Pour rappel, l’ordre est toujours : Minute Heure Jour_du_mois Mois Jour_de_la_semaine [Utilisateur] Commande