Linux
Crontab Linux - guide complet avec 20 exemples
15 min de lecturePublié le 2026-01-25Spectra Consulting
Crontab est le planificateur de tâches de Linux. Il permet d'exécuter automatiquement des commandes ou scripts à des moments précis — toutes les heures, chaque nuit, le premier lundi du mois. Indispensable pour automatiser sauvegardes, rapports, nettoyages et déploiements planifiés.
Accéder à la crontab
crontab -e # Éditer sa crontab
crontab -l # Lister les tâches planifiées
crontab -r # Supprimer toutes les tâches (attention !)
sudo crontab -u www-data -e # Éditer la crontab d'un autre utilisateur
grep CRON /var/log/syslog | tail -20 # Voir les logsLa syntaxe crontab expliquée
# ┌───── minute (0-59)
# │ ┌───── heure (0-23)
# │ │ ┌───── jour du mois (1-31)
# │ │ │ ┌───── mois (1-12)
# │ │ │ │ ┌───── jour de la semaine (0-7, 0=7=dimanche)
# │ │ │ │ │
# * * * * * commande
* Toutes les valeurs
, Liste : 1,3,5
- Plage : 9-17
/ Pas : */5 = toutes les 5 unitésLes raccourcis @ (macros)
@reboot Exécuter au démarrage
@daily Chaque jour à minuit (0 0 * * *)
@hourly Chaque heure (0 * * * *)
@weekly Chaque semaine (0 0 * * 0)
@monthly Chaque mois (0 0 1 * *)
@yearly Chaque an (0 0 1 1 *)Exemples par fréquence
*/5 * * * * Toutes les 5 minutes
0 * * * * Chaque heure pile
0 2 * * * Chaque jour à 2h (idéal sauvegardes)
30 8 * * 1-5 Lundi-vendredi à 8h30
0 0 1 * * Le 1er de chaque mois
0 3 * * 1 Chaque lundi à 3h
0 0 * * 0 Chaque dimanche à minuitExemples réels d'utilisation
Sauvegardes automatiques
# PostgreSQL chaque nuit à 2h
0 2 * * * pg_dump -U postgres mabase > /backup/mabase_$(date +%Y%m%d).sql
# Rotation : supprimer backups > 30 jours
0 3 * * * find /backup -name "*.sql" -mtime +30 -delete
# Rsync vers serveur distant
0 2 * * * rsync -az /var/www/ user@backup-server:/backup/www/Monitoring et alertes
# Alerte espace disque > 80%
0 * * * * df -h | awk '$5 > 80 {print}' | mail -s "Alerte disque" admin@example.com
# Vérifier si le site répond (toutes les 5 min)
*/5 * * * * curl -sf https://monsite.fr > /dev/null || echo "Site DOWN" | mail -s "ALERTE" admin@example.comMaintenance système
# Mise à jour automatique (nuit)
0 3 * * * apt-get update && apt-get upgrade -y >> /var/log/auto-upgrade.log 2>&1
# Nettoyer /tmp > 7 jours
0 2 * * * find /tmp -mtime +7 -delete
# Redémarrer Nginx chaque nuit
0 4 * * * systemctl restart nginx
# Lancer un service au boot
@reboot sleep 30 && systemctl start mon-serviceGérer les sorties et les logs
# Ignorer toute sortie
* * * * * /script.sh > /dev/null 2>&1
# Logger dans un fichier avec horodatage
0 2 * * * echo "=== $(date) ===" >> /var/log/cron.log && /script.sh >> /var/log/cron.log 2>&1Variables d'environnement
La crontab s'exécute dans un environnement minimal. Toujours utiliser des chemins absolus :
# En tête de crontab
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO="admin@example.com"
# Bonne pratique : chemins absolus
0 2 * * * /usr/bin/python3 /home/ubuntu/script.py
# Pas : python3 ~/script.py (peut ne pas fonctionner !)Débugger une crontab
# 1. Vérifier les logs
grep CRON /var/log/syslog | tail -30
# 2. Tester avec l'environnement de cron
env -i HOME=/home/ubuntu SHELL=/bin/bash PATH=/usr/bin:/bin /mon-script.sh
# 3. Vérifier le démon
systemctl status cron
# 4. Valider la syntaxe : https://crontab.guru/
# 5. Logger les erreurs
0 2 * * * /script.sh > /tmp/test-cron.log 2>&1Crontab système
# Fichiers dans /etc/cron.d/ — format avec utilisateur :
# * * * * * root /script.sh
/etc/cron.daily/ # Scripts exécutés chaque jour
/etc/cron.weekly/ # Scripts exécutés chaque semaine
/etc/cron.monthly/ # Scripts exécutés chaque moisPratiquer crontab sur un vrai serveur
Notre formation Linux inclut des labs crontab sur un vrai serveur Ubuntu : créer des tâches planifiées, observer leur exécution via les logs, débugger les problèmes courants.
Passez à la pratique
Cet article vous a donné les bases. Maintenant, pratiquez chaque commande sur un vrai terminal avec nos labs interactifs guidés.
Commencer les labs Linux