0 Votes

Modifications pour le document Nettoyage Système (script)

Modifié par john le 2026/09/20 20:26

Depuis la version 4.1
modifié par john
sur 2026/09/20 20:26
Commentaire de modification : Il n'y a aucun commentaire pour cette version
À la version 3.1
modifié par john
sur 2025/05/25 00:32
Commentaire de modification : Il n'y a aucun commentaire pour cette version

Résumé

Détails

Propriétés de la Page
Titre
... ... @@ -1,1 +1,1 @@
1 -Nettoyage Système (script)
1 +ScriptsPerso/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 utilisateur de plus de 30 jours
42 -echo "Cache utilisateur" | tee -a "$LOG"
43 -run find "$HOME/.cache" -type f -atime +30 -delete
37 +# 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 "Paquets apt" | tee -a "$LOG"
48 - run sudo apt-get autoclean -y
49 - run sudo apt-get autoremove --purge -y
41 +# 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 "Paquets dnf" | tee -a "$LOG"
55 - run sudo dnf clean all
56 - run sudo dnf autoremove -y
48 +# 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 temporaires de plus de 10 jours, non utilisés
60 -echo "Fichiers temporaires anciens" | tee -a "$LOG"
61 -run sudo find /var/tmp -type f -atime +10 -delete
55 +# 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 toutes les images non utilisées par un conteneur en cours, y compris celles construites localement, qui devront être reconstruites. À é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 -* Lancer d'abord avec ##--dry-run##
94 -* Préférer ##find ... -delete## avec un critère d'âge à un ##rm -rf## global
95 -* Vérifier la syntaxe avant d'exécuter : ##bash -n nettoyage.sh##
96 -* Sur un serveur, relire la liste proposée par ##apt autoremove## avant de confirmer : il retire parfois des paquets encore utiles, installés comme dépendances
82 +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 à 6 h :
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 la distribution ==
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 -* [[Manuel de rm>>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]]