Modifications pour le document Nettoyage Système (script)
Modifié par john le 2026/09/20 20:26
Résumé
-
Propriétés de la Page (2 modifications, 0 ajouts, 0 suppressions)
Détails
- Propriétés de la Page
-
- Titre
-
... ... @@ -1,1 +1,1 @@ 1 -Nettoyage Système (script)1 +Nettoyage - Contenu
-
... ... @@ -1,10 +1,17 @@ 1 += Script de nettoyage système = 2 + 1 1 {{toc/}} 2 2 3 3 == Présentation == 4 4 5 -Ce script nettoie un système Linux : caches, paquets inutiles, fichiers temporaires anciens, journaux trop volumineux. 7 +Ce script permet de **nettoyer un système Linux** en supprimant : 8 +- les caches d’utilisateur, 9 +- les paquets inutiles, 10 +- les fichiers temporaires, 11 +- les vieux fichiers journaux, 12 +- et autres éléments obsolètes. 6 6 7 -Il est conçu pour être **sûr**, **verbeux** et **personnalisable** , avec un mode simulation.14 +Il est conçu pour être **sûr**, **verbeux**, et **personnalisable**. 8 8 9 9 ---- 10 10 ... ... @@ -12,132 +12,115 @@ 12 12 13 13 * Libérer de l’espace disque 14 14 * Éviter les lenteurs causées par des accumulations inutiles 15 -* Prévenir les erreurs d’espace faible 22 +* Prévenir les erreurs d’espace faible (`disk full`) 16 16 * Réduire le bruit dans les sauvegardes automatiques 17 17 18 18 ---- 19 19 20 -== Script ==27 +== Exemple de script complet == 21 21 22 22 {{code language="bash"}} 23 23 #!/bin/bash 31 + 24 24 set -euo pipefail 25 25 26 -DRY_RUN="${1:-}" # ./nettoyage.sh --dry-run pour simuler 27 27 LOG="$HOME/nettoyage_$(date +%F).log" 28 - 29 -run() { 30 - if [ "$DRY_RUN" = "--dry-run" ]; then 31 - echo "[simulation] $*" | tee -a "$LOG" 32 - else 33 - echo "+ $*" | tee -a "$LOG" 34 - "$@" >> "$LOG" 2>&1 || true 35 - fi 36 -} 37 - 38 38 echo "Début du nettoyage : $(date)" | tee "$LOG" 39 -df -h / | tail -n 1 | tee -a "$LOG" 40 40 41 -# Caches utilisateurde plus de 30 jours42 -echo " Cache utilisateur" | tee -a "$LOG"43 -r unfind"$HOME/.cache"-typef-atime+30-delete37 +# 1. Nettoyage des caches utilisateur 38 +echo "Nettoyage du cache utilisateur (~/.cache)" | tee -a "$LOG" 39 +rm -rf ~/.cache/* >> "$LOG" 2>&1 || true 44 44 45 -# Paquets (Debian/Ubuntu)46 -if command -v apt >/dev/null; then 47 - echo " Paquetsapt" | tee -a "$LOG"48 - runsudo apt-getautoclean -y49 - runsudo apt-getautoremove --purge -y41 +# 2. Nettoyage des paquets orphelins (Debian/Ubuntu) 42 +if command -v apt &>/dev/null; then 43 + echo "Nettoyage apt (autoclean, autoremove)" | tee -a "$LOG" 44 + sudo apt autoclean -y >> "$LOG" 2>&1 45 + sudo apt autoremove -y >> "$LOG" 2>&1 50 50 fi 51 51 52 -# Paquets(Fedora/RHEL)53 -if command -v dnf >/dev/null; then 54 - echo " Paquetsdnf" | tee -a "$LOG"55 - runsudo dnf clean all56 - runsudo dnf autoremove -y48 +# 3. Nettoyage DNF (RHEL/Fedora) 49 +if command -v dnf &>/dev/null; then 50 + echo "Nettoyage dnf" | tee -a "$LOG" 51 + sudo dnf clean all -y >> "$LOG" 2>&1 52 + sudo dnf autoremove -y >> "$LOG" 2>&1 57 57 fi 58 58 59 -# Fichiers temporairesde plus de 10 jours, non utilisés60 -echo " Fichiers temporairesanciens" | tee -a "$LOG"61 - runsudo find/var/tmp-typef-atime +10-delete55 +# 4. Suppression des fichiers temporaires 56 +echo "Suppression de /tmp" | tee -a "$LOG" 57 +sudo rm -rf /tmp/* /var/tmp/* >> "$LOG" 2>&1 || true 62 62 63 -# Journaux systemd : garder 7 jours, au plus 500 Mo 64 -echo "Journaux systemd" | tee -a "$LOG" 65 -run sudo journalctl --vacuum-time=7d 66 -run sudo journalctl --vacuum-size=500M 59 +# 5. Nettoyage des anciens journaux 60 +echo "Nettoyage des journaux (>7 jours)" | tee -a "$LOG" 61 +sudo journalctl --vacuum-time=7d >> "$LOG" 2>&1 || true 67 67 68 -echo "Fin du nettoyage : $(date)" | tee -a "$LOG" 69 -df -h / | tail -n 1 | tee -a "$LOG" 63 +echo "Nettoyage terminé : $(date)" | tee -a "$LOG" 70 70 {{/code}} 71 71 72 -{{warning}} 73 -Ne pas faire ##rm -rf /tmp/* /var/tmp/*## sur un système en marche : ces dossiers contiennent des fichiers utilisés par les services en cours (sessions, verrous, travaux temporaires). ##/tmp## est vidé au redémarrage sur les systèmes récents, et ##systemd-tmpfiles## fait déjà le ménage périodiquement. 74 -{{/warning}} 75 - 76 76 ---- 77 77 78 -== Docker ==68 +== Astuces supplémentaires == 79 79 80 -{{code language="bash"}} 81 -docker image prune # images intermédiaires sans nom 82 -docker system prune # conteneurs arrêtés, réseaux inutilisés, cache de build 83 -{{/code}} 70 +* Pour un système graphique, on peut aussi nettoyer les miniatures GNOME : 71 +{{code language="bash"}} rm -rf ~/.cache/thumbnails/* 72 + {{/code}} 84 84 85 - {{warning}}86 - ##docker system prune -af## supprime toutesles imagesnonutiliséesparun conteneuren cours,ycompriscelles construites localement,qui devront êtrereconstruites. À éviter dans un script automatique.87 -{{/ warning}}74 +* Pour les utilisateurs de Docker : 75 +{{code language="bash"}} docker system prune -af 76 + {{/code}} 88 88 89 89 ---- 90 90 91 91 == Sécuriser les suppressions == 92 92 93 - *Lancerd'abordavec##--dry-run##94 - *Préférer##find... -delete##avecun critèred'âge à un ##rm -rf## global95 - *Vérifierlasyntaxeavant d'exécuter: ##bash -nnettoyage.sh##96 - *Sur un serveur,relirela listeproposée par ##apt autoremove##avantde confirmer : il retire parfoisdespaquets encoreutiles, installéscommedépendances82 +Pour éviter les suppressions accidentelles : 83 +- Toujours **tester d’abord avec `echo`** 84 +- Utiliser `rm -i` pour confirmation 85 +- Ajouter `--dry-run` pour des commandes comme `rsync` ou `apt`-- 97 97 98 98 ---- 99 99 100 100 == Journalisation == 101 101 102 -Le script écrit un journal daté dans ##$HOME##, ce qui permet de vérifier les erreurs et d'auditer les nettoyages passés. 91 +Le script ci-dessus crée un **log daté** dans `$HOME`, ce qui permet de : 92 +- Vérifier les erreurs 93 +- Auditer les nettoyages passés 94 +- Automatiser sans crainte (par cron) 103 103 104 104 ---- 105 105 106 -== Automatiser avec cron == 98 +== Automatiser avec `cron` == 107 107 108 -Pour l'exécuter tous les dimanches à 6h :100 +Pour exécuter le nettoyage tous les dimanches à 6h : 109 109 110 - {{code language="bash"}}111 -crontab -e 112 -{{/code}} 102 +1. Modifier la crontab : 103 +{{code language="bash"}} crontab -e 104 + {{/code}} 113 113 114 - {{code language="text"}}115 -0 6 * * 0 /chemin/vers/nettoyage.sh 116 -{{/code}} 106 +2. Ajouter la ligne suivante : 107 +{{code language="bash"}} 0 6 * * 0 /chemin/vers/nettoyage.sh 108 + {{/code}} 117 117 118 -Les commandes en ##sudo## ne fonctionneront dans une crontab utilisateur que si ##sudo## est configuré sans mot de passe pour ces commandes ; sinon, placer le script dans ##/etc/cron.d/## avec l'utilisateur ##root##. 119 - 120 120 ---- 121 121 122 -== À adapter selon ladistribution ==112 +== À adapter selon votre distribution == 123 123 124 -|=Distribution|=Commande principale 125 -|Debian / Ubuntu| ##apt##,##journalctl##,##dpkg##126 -|Fedora / RHEL| ##dnf##,##journalctl##127 -|Arch Linux| ##pacman -Rns $(pacman -Qtdq)##128 -|Alpine Linux| ##apk cache clean##114 +|= Distribution |= Commande principale | 115 +| Debian / Ubuntu | `apt`, `journalctl`, `dpkg` | 116 +| Fedora / RHEL | `dnf`, `journalctl` | 117 +| Arch Linux | `pacman -Rns $(pacman -Qtdq)` | 118 +| Alpine Linux | `apk cache clean` | 129 129 130 130 ---- 131 131 132 132 == Liens utiles == 133 133 134 -* [[journalctl(documentation systemd)>>https://www.freedesktop.org/software/systemd/man/journalctl.html]]135 -* [[Manuelderm>>https://man7.org/linux/man-pages/man1/rm.1.html]]136 -* [[ShellCheck>>https://www.shellcheck.net]]124 +* Systemd journalctl vacuum https~://www.freedesktop.org/software/systemd/man/journalctl.html#--vacuum-size=)--// 125 +* GNU `rm` documentation https~://man7.org/linux/man-pages/man1/rm.1.html)// 126 +* ShellCheck https~://www.shellcheck.net) pour analyser les scripts// 137 137 138 138 ---- 139 139 140 140 == Liens internes == 141 141 142 -* [[Retour aux scripts perso>>doc:Wiki Batcave John.TutosLinux.ScriptsPerso.WebHome]] 132 +* [[Retour aux scripts personnels>>doc:Wiki Batcave John.TutosLinux.ScriptsPerso.WebHome]] 143 143 * [[Retour à l’accueil>>doc:Wiki Batcave John.WebHome]]