Crontab ⏰
cron exécute automatiquement des commandes à des horaires définis. Une tâche planifiée ne s'exécute que si la machine est allumée à l'heure prévue. 🤖
Structure 🧱
Cette sous-section explique la syntaxe des tables cron.
Crontab utilisateur 👤
Une tâche créée avec crontab -e ne contient pas de champ utilisateur.
Crontab système ⚙️
Les fichiers /etc/crontab et /etc/cron.d/* contiennent un champ utilisateur supplémentaire.
Champs 📋
| Position | Champ | Valeurs |
|---|---|---|
| 1 | Minute | 0–59 |
| 2 | Heure | 0–23 |
| 3 | Jour du mois | 1–31 |
| 4 | Mois | 1–12 ou jan–dec |
| 5 | Jour de la semaine | 0–7 ou sun–sat ; 0 et 7 sont dimanche |
Métacaractères ✨
*: toutes les valeurs possibles.,: liste de valeurs, par exemple1,5,10.-: intervalle inclusif, par exemple1-5./: pas, par exemple*/15toutes les quinze minutes.
Attention aux jours 📅
Lorsque les champs jour du mois et jour de la semaine sont tous deux renseignés, la tâche s'exécute si l'un des deux correspond — ce n'est pas un « et ». Utilisez * dans l'un des deux champs si vous ne souhaitez tester que l'autre.
Exemples ▶️
Cette sous-section fournit des planifications fréquentes. Utilisez toujours le chemin absolu du script ou de l'exécutable.
Chaque jour à 08 h 00 🌅
Le premier jour du mois à 02 h 00 📆
Le 15 des mois impairs à 16 h 00 🗓️
Chaque lundi à 07 h 00 🗓️
Les trois premiers jours du mois à 09 h 00 🔢
Toutes les quinze minutes en semaine 🕒
Exécute la tâche de 07 h 00 à 17 h 45, du lundi au vendredi.
Utiliser les raccourcis ⌛
cron propose des expressions prédéfinies pour les fréquences courantes.
@hourly /chemin/absolu/script.sh
@daily /chemin/absolu/script.sh
@weekly /chemin/absolu/script.sh
@monthly /chemin/absolu/script.sh
@reboot /chemin/absolu/script.sh
Gérer les tâches 🛠️
Cette sous-section couvre les opérations courantes sur les crontabs utilisateurs.
Lister les tâches 📋
Affiche la crontab de l'utilisateur courant, ou celle de rocky avec les droits administrateur.
Créer ou modifier une tâche ✍️
Ouvre la crontab dans l'éditeur configuré.
Supprimer toutes les tâches 🗑️
Supprime entièrement la crontab de l'utilisateur courant. Cette opération est irréversible.
Installer une crontab depuis un fichier 📥
Permet de versionner une crontab puis de l'installer explicitement.
Bonnes pratiques 🛡️
Cette sous-section évite les échecs silencieux et les exécutions concurrentes.
Définir l'environnement 🌱
cron exécute les commandes avec un environnement minimal : il ne lit généralement ni .bashrc ni .bash_profile. Définissez les variables indispensables dans la crontab ou dans le script.
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=admin@example.internal
0 2 * * * /usr/local/sbin/backup.sh
Journaliser la tâche 📜
Redirige la sortie standard et les erreurs vers un fichier de journal.
Éviter les exécutions simultanées 🔒
flock empêche une nouvelle exécution si la précédente n'est pas terminée.
Échapper le caractère % 💯
Dans une commande cron, % est transformé en saut de ligne. Échappez-le avec \ lorsqu'il est transmis à une commande telle que date.
Diagnostiquer 🔍
Cette sous-section aide à vérifier que le service est actif et à retrouver les messages des tâches planifiées.
Vérifier le service ⚙️
Sur Rocky Linux, le service est généralement crond. Sur Debian, il est généralement cron.
Suivre les journaux 📜
Consultez le journal systemd ; sur les systèmes configurés avec rsyslog, les tâches peuvent également apparaître dans un fichier dédié.
Vérifier le script 🧪
Exécutez le script manuellement avec le même utilisateur, puis vérifiez son bit d'exécution et ses chemins.