Cron — le planificateur de tâches Unix. Ce guide couvre l'installation, la syntaxe des expressions cron, les exemples courants et les bonnes pratiques.
Sur Debian / Ubuntu, le service cron est souvent préinstallé. Vérifiez et installez si nécessaire :
sudo apt update
sudo apt install cron -y
Vérifier que le service est actif :
sudo systemctl status cron
Ouvrez la table des tâches planifiées de l'utilisateur courant avec l'éditeur par défaut :
# Ouvrir en édition
crontab -e
# Lister les tâches existantes
crontab -l
Une ligne crontab se compose de 5 champs temporels suivis de la commande à exécuter :
* signifie "toutes les valeurs" pour ce champ.
Le jour de la semaine 0 et 7 correspondent tous deux au dimanche.
Opérateurs spéciaux utilisables dans les champs :
* — toutes les valeurs (ex : chaque minute, chaque heure), — liste de valeurs (ex : 1,15,30 pour les minutes 1, 15 et 30)- — plage de valeurs (ex : 9-17 pour chaque heure de 9h à 17h)/ — pas d'incrémentation (ex : */5 pour toutes les 5 minutes)| Expression | Description |
|---|---|
| 0 2 * * * | Chaque jour à 2h00 du matin |
| */5 * * * * | Toutes les 5 minutes |
| 0 9-17 * * 1-5 | Toutes les heures de 9h à 17h, du lundi au vendredi |
| 0 0 1 * * | Le 1er de chaque mois à minuit |
| 30 23 * * 0 | Chaque dimanche à 23h30 |
| 0 4 * * 1,4 | Tous les lundis et jeudis à 4h00 |
| @reboot | Au démarrage du système (raccourci spécial) |
Exemple complet — exécuter un script de sauvegarde chaque jour à 2h, avec journalisation :
# Sauvegarde quotidienne à 2h00 — sorties redirigées vers un log
0 2 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1
# Activer le démarrage automatique au boot
sudo systemctl enable cron
# Démarrer le service
sudo systemctl start cron
# Redémarrer après modification
sudo systemctl restart cron
Pour les tâches planifiées qui s'appliquent à tout le système (pas seulement à un utilisateur), éditez le crontab système :
# Crontab système — inclut un champ "utilisateur" supplémentaire
sudo nano /etc/crontab
/etc/crontab utilise un format légèrement différent — il comporte
un 6ème champ entre l'expression temporelle et la commande, indiquant
l'utilisateur sous lequel la tâche sera exécutée.
>> /var/log/script.log 2>&1 pour pouvoir diagnostiquer les erreurs.
/var/log/syslog pour voir
l'historique d'exécution de toutes les tâches cron du système.
chmod 700
sur vos scripts pour qu'ils ne soient exécutables que par leur propriétaire.
/usr/bin/python3 et non python3)
car cron n'hérite pas du PATH utilisateur.