Bonjour !
Dans la leçon précédente, nous avons construit un script de sauvegarde robuste et fonctionnel. Vous avez appris à utiliser des variables, à horodater vos archives et à vérifier si la commande tar s'est exécutée avec succès. Cependant, notre script nécessite encore une action manuelle pour être lancé.
Aujourd'hui, nous allons franchir la dernière étape pour transformer ce script en un véritable automatisme. L'objectif de cette leçon est de vous apprendre à planifier l'exécution automatique de scripts avec cron. cron est l'outil standard sur tous les systèmes Linux pour automatiser des tâches, qu'il s'agisse de sauvegardes nocturnes, de mises à jour hebdomadaires ou de rapports mensuels. Maîtriser cron est une compétence non négociable pour tout administrateur systèmes.
1. Qu'est-ce que cron ?
Au cœur de Linux, de nombreux services fonctionnent en arrière-plan pour maintenir le système en état de marche. cron est l'un de ces services, souvent appelé un démon (daemon). Son unique travail est de se réveiller chaque minute, de consulter un fichier de configuration appelé crontab (table de cron), et d'exécuter les tâches qui y sont programmées pour cette minute précise.
Pour une introduction rapide et claire, regardons cette vidéo.
Cette courte vidéo de la chaîne "Informatique Sans Complexe !" explique très bien le concept du démon cron et introduit le principe de la crontab.
Regardez le début de la vidéo, de 00:00 à 01:36. Concentrez-vous sur la définition de cron comme un service en tâche de fond et sur le rôle du fichier crontab comme une table de planification.
Chaque utilisateur du système peut avoir sa propre crontab pour planifier ses propres tâches. Il existe également une crontab système (/etc/crontab) gérée par l'administrateur pour les tâches qui concernent l'ensemble de la machine, mais pour l'instant, nous nous concentrerons sur votre crontab personnelle.
2. La syntaxe crontab : le langage de la planification
Pour dire à cron quand exécuter une commande, nous devons écrire une ligne dans notre fichier crontab en respectant une syntaxe très précise. Chaque ligne représente une tâche planifiée et est composée de six champs.

La structure est donc : minute heure jour-du-mois mois jour-de-la-semaine commande.
Pour bien comprendre cette syntaxe et les caractères spéciaux qui la rendent si puissante, je vous propose de lire la section dédiée dans le guide suivant.
Cron et Crontab : planification de tâches sur Linux
Ce guide de Stéphane Robert détaille de manière très claire la syntaxe crontab, y compris les caractères spéciaux et les abréviations utiles.
Lisez la section intitulée "Syntaxe de Crontab". Portez une attention particulière à la signification de chaque champ et au rôle des caractères spéciaux : l'astérisque (*), la virgule (,), le tiret (-) et la barre oblique (/). Notez aussi les abréviations pratiques comme @daily.
En résumé :
*signifie "chaque". Par exemple,*dans le champ des heures signifie "chaque heure".*/5dans le champ des minutes signifie "toutes les 5 minutes".1-5dans le champ du jour de la semaine signifie "du lundi au vendredi".0 4 * * 1signifie "tous les lundis à 4h00 du matin".
3. Gérer votre crontab
Maintenant que vous connaissez la syntaxe, voyons comment créer et gérer votre crontab personnelle. Cela se fait principalement avec la commande crontab et quelques options.
crontab -e: Pour éditer (modifier) votrecrontab. C'est la commande que vous utiliserez le plus.crontab -l: Pour lister (afficher) le contenu de votrecrontabactuelle.crontab -r: Pour remove (supprimer) complètement votrecrontab. Attention, cette commande est dangereuse car elle ne demande pas de confirmation !
La première fois que vous lancerez crontab -e, le système vous demandera de choisir un éditeur de texte.

Après avoir fait votre choix, un fichier s'ouvrira dans nano, prêt à être modifié. Vous pourrez y ajouter vos lignes de planification, puis sauvegarder (Ctrl+O) et quitter (Ctrl+X). cron détectera automatiquement les changements.
4. Exercice : Automatisez votre script de sauvegarde
Il est temps de mettre tout cela en pratique et d'automatiser le script mon_backup.sh que vous avez créé dans la leçon précédente.
Objectif : Planifier l'exécution du script de sauvegarde toutes les minutes (à des fins de test) et vérifier que tout fonctionne correctement.
-
Ouvrez votre
crontabpour l'éditer :crontab -e(Choisissez
nanosi c'est la première fois). -
Ajoutez la ligne de planification :
À la fin du fichier, ajoutez la ligne suivante. Adaptez le chemin/home/votre_user/à votre nom d'utilisateur.* * * * * /bin/bash /home/votre_user/mon_backup.sh > /home/votre_user/backup.log 2>&1Analyse de cette ligne :
* * * * *: "chaque minute de chaque heure de chaque jour..." C'est notre planification pour tester rapidement./bin/bash /home/votre_user/mon_backup.sh: C'est la commande. Il est crucial d'utiliser les chemins complets (absolus) carcronne dispose pas du même environnement que votre terminal. Il ne sait pas "où" se trouve votre script par défaut.> /home/votre_user/backup.log 2>&1: C'est une bonne pratique essentielle.>redirige la sortie standard (les messages de succès) vers le fichierbackup.log.2>&1redirige la sortie d'erreur (la "2") vers la même destination que la sortie standard (la "1").- En bref : tout ce que le script affichera, succès comme erreur, sera écrit dans le fichier
backup.logau lieu d'être envoyé par email.
-
Sauvegardez et quittez
nano. Vous devriez voir un message commecrontab: installing new crontab. -
Vérifiez l'exécution :
- Attendez une ou deux minutes.
- Listez les fichiers dans votre dossier de sauvegardes :
Vous devriez voir de nouvelles archivesls -l ~/sauvegardes.tar.gzapparaître chaque minute. - Consultez le fichier journal :
Vous devriez y voir le message de succès que vous avez programmé dans votre script.cat ~/backup.log
-
Challenge : Modifier la planification
Maintenant, éditez à nouveau votrecrontab(crontab -e) et modifiez la ligne pour que le script s'exécute tous les jours à 2h30 du matin.Cliquez ici pour voir la solution
30 2 * * * /bin/bash /home/votre_user/mon_backup.sh > /home/votre_user/backup.log 2>&1 -
Nettoyage :
Une fois que vous avez bien compris le mécanisme, supprimez votrecrontabpour ne pas encombrer votre système avec des sauvegardes chaque minute.crontab -rVérifiez qu'elle a bien été supprimée avec
crontab -l(la commande devrait afficherno crontab for votre_user).
Conclusion
Félicitations ! Vous avez maintenant le pouvoir d'automatiser n'importe quelle commande ou script sur un système Linux. Vous avez transformé un script manuel en un processus de sauvegarde entièrement automatique, une compétence fondamentale en administration système.
Points clés à retenir :
cronest le service qui exécute les tâches,crontabest le fichier qui les planifie.- La syntaxe
crontabest composée de 5 champs pour l'heure/date et un champ pour la commande. - Les commandes de base sont
crontab -e(éditer),crontab -l(lister) etcrontab -r(supprimer). - Les bonnes pratiques sont cruciales : toujours utiliser des chemins absolus pour les commandes et les scripts, et rediriger la sortie vers un fichier de log pour garder une trace.
Notre voyage dans l'automatisation avec Bash est maintenant terminé. Vous savez écrire des scripts, utiliser des conditions et des boucles, et planifier leur exécution. Mais que se passe-t-il quand un script automatisé échoue ? Comment savoir ce qui n'a pas fonctionné ?
Dans notre prochain module, nous aborderons les méthodologies de dépannage. Vous apprendrez à analyser les journaux système (comme backup.log ou les logs de cron eux-mêmes) pour diagnostiquer et résoudre les problèmes, une compétence tout aussi vitale que l'automatisation.