Après avoir appris à écrire des scripts Bash avancés (module L7), il est temps de les automatiser : plutôt que de lancer une sauvegarde ou une purge de logs manuellement chaque jour, on planifie leur exécution. Sous Linux, deux outils permettent cela : le vénérable cron, et son alternative plus moderne, les timers systemd.
Une ligne de crontab est composée de 5 champs horaires suivis de la commande à exécuter.
| Champ | Valeurs possibles | Signification |
|---|---|---|
| 1 | 0-59 | Minute |
| 2 | 0-23 | Heure |
| 3 | 1-31 | Jour du mois |
| 4 | 1-12 | Mois |
| 5 | 0-7 (0 et 7 = dimanche) | Jour de la semaine |
* signifie « à chaque valeur ». Exemple : 0 3 * * * = tous les jours à 3h00 précises.
Chaque utilisateur (y compris root) dispose de sa propre crontab, éditable en ligne de commande.
| Commande | Effet |
|---|---|
crontab -e | Édite la crontab de l'utilisateur courant |
crontab -l | Liste les tâches planifiées de l'utilisateur courant |
crontab -r | Supprime toute la crontab de l'utilisateur (⚠️ sans confirmation) |
sudo crontab -e -u www-data | Édite la crontab d'un autre utilisateur |
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Exécute le script de sauvegarde tous les jours à 2h00, et redirige à la fois la sortie standard et les erreurs vers un fichier de log.
Pour des tâches simples exécutées une fois par jour, semaine ou mois, Debian propose des répertoires prêts à l'emploi, plus simples à gérer qu'une ligne de crontab.
| Répertoire | Fréquence d'exécution |
|---|---|
/etc/cron.daily/ | Une fois par jour |
/etc/cron.weekly/ | Une fois par semaine |
/etc/cron.monthly/ | Une fois par mois |
chmod +x obligatoire) — pas besoin d'écrire de ligne crontab.
Sur les systèmes récents, systemd propose une alternative à cron : les timers, associés à des services systemd (voir module L5).
| Avantage des timers systemd | Par rapport à cron |
|---|---|
| Journalisation intégrée | Consultable directement avec journalctl |
| Gestion des dépendances | Peut attendre qu'un autre service soit prêt |
| Rattrapage des tâches manquées | Option Persistent=true si la machine était éteinte |
Ce module clôt la partie « automatisation » avant de basculer vers l'administration à distance avec le module L9 – SSH (Sécurisation des accès distants).