Résolu le 30-05-20 Aide pour finaliser un script de nettoyage complet du système

Questions concernant les lignes de commandes
Avatar du membre
Mia88
Messages : 1355
Enregistré le : ven. 18 nov. 2016 08:42
Localisation : Lorraine

Aide pour finaliser un script de nettoyage complet du système

Message par Mia88 »

Bonjour,

J'ai essayé de faire un script de nettoyage le plus complet possible, en m'inspirant et en adaptant que je que j'ai trouvé un peu partout.

J'aurais besoin de conseils pour le finaliser.
Je le placerai ensuite dans la crontab de root en hebdomadaire, raison pour laquelle je n'ai pas mis de sudo avant les commandes.

1 - Quand je lance cette commande pour supprimer les fichiers de configuration obsolètes, j'obtiens ce résultat :

Code : Tout sélectionner

mia@PC5:/$ dpkg -l|grep "^rc"|awk '{print $2}'
apport
clamsmtp
libqtcore4:amd64
linux-image-4.15.0-66-generic
linux-image-4.15.0-70-generic
linux-image-4.15.0-72-generic
linux-modules-4.15.0-66-generic
linux-modules-4.15.0-70-generic
linux-modules-4.15.0-72-generic
linux-modules-extra-4.15.0-66-generic
linux-modules-extra-4.15.0-70-generic
linux-modules-extra-4.15.0-72-generic
linux-modules-extra-4.15.0-88-generic
linux-modules-extra-4.15.0-91-generic
onboard
mia@PC5:/$ 
Dans Synpatic, ça correspond aux résidus de configuration :

Image

Sauf cette ligne :

Code : Tout sélectionner

libqtcore4:amd64
Les infos trouvées concernant ce paquet :
Paquet : libqtcore4 (4:4.8.7+dfsg-11)
module de base de QT 4
Qt est un cadre applicatif C++ multiplate-forme. Sa principale caractéristique est son grand nombre de composants qui fournissent les fonctionnalités classiques d'une interface graphique."
Le module QtCore fournit les fonctionnalités non graphiques de base.
Ce qui ne m'éclaire pas beaucoup quant aux conséquences de sa suppression.
Auriez-vous davantage d'informations ?

2 - Je cherche pour compléter le nettoyage, une commande qui renvoie la liste des "fichiers orphelins" trouvés par deborphan,
sachant que la commande autoremove n'inclut pas ce résultat :

Image

Code : Tout sélectionner

mia@PC5:/$ sudo apt autoremove
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  linux-headers-4.15.0-88 linux-headers-4.15.0-88-generic
  linux-headers-4.15.0-91 linux-headers-4.15.0-91-generic
  linux-image-4.15.0-88-generic linux-image-4.15.0-91-generic
  linux-modules-4.15.0-88-generic linux-modules-4.15.0-91-generic
0 mis à jour, 0 nouvellement installés, 8 à enlever et 48 non mis à jour.
Après cette opération, 326 Mo d'espace disque seront libérés.
Souhaitez-vous continuer ? [O/n]
3 – Je suis bredouille pour la commande qui permet de trouver les fichiers de configuration dans /home pour les logiciels désinstallés
Si quelqu'un peut me l'indiquer, le script serait vraiment complet ;)

4 - Savez-vous s'il y a-t-il d'autres caches que celui d'apt à nettoyer, par exemple dans le dossier /home/user/.cache (ou ailleurs) ?

Pour terminer, si un œil expérimenté pouvait vérifier que je n'ai fait pas de bourdes dans le script, je pense avoir compris toutes les commandes et leur syntaxe, mais je ne suis pas à l'abri d'une mauvaise surprise :?
Merci bcp ;)

Code : Tout sélectionner

#/bin/sh
echo "Nettoyage"

echo "Réparation des dépendances cassées..."
apt-get -f install

echo "Suppression des paquets inutiles..."
# anciens noyaux (sauf avant dernier)
# dépendances inutiles (ne correspond aux fichiers orphelins dans synaptic)
# options -y (yes à tout) et --purge (fichiers de conf associés ?)
sudo apt-get -y autoremove --purge

echo "Suppression des résidus de logiciels supprimés..."
# correspond à Résidus de configuration dans synaptic
dpkg -l|grep "^rc"|awk '{print $2}'| xargs sudo dpkg --purge

echo "Suppression du cache d'apt pour les logiciels désinstallés..."
apt-get autoclean

# pour suppression de tout le cache d'apt (paquets installés et téléchargements incomplets)
#apt-get clean

echo "Suppression des fichiers de sauvegarde..."
find $HOME/ -name '*~' -print0 | xargs -0 rm -f

echo "Suppression des miniatures de plus de 7 jours ..."
find ~/.thumbnails -type f -ctime +7 -delete

# suppression de toutes les miniatures
#rm -rf /home/*/.cache/thumbnails

echo "Suppression des entrées de journaux de plus de 7 jours..."
journalctl –vacuum-time=7day

# Suppression des fichiers temporaires
# Attention à ceux en cours d'utilisation
#rm -f /tmp/*

echo "Vidage du cache du navigateur..."
rm -rf /home/*/.cache/mozilla/firefox/*default/cache2

echo "Nettoyage de la ram..."
su -c "echo 3 >'/proc/sys/vm/drop_caches'
echo "Nettoyage du swap..."
swapoff -a && swapon -a
printf '\n%s\n' 'Ram-cache et swap nettoyés'" root

echo "Vidage des corbeilles..."
rm -rf /home/*/.local/share/Trash/*/* &> /dev/null
rm -rf /root/.local/share/Trash/*/* &> /dev/null

notify-send "Nettoyage terminé"
Mint Cinnamon 21.1 / Intel Xeon CPU E3-1270 V2 3.5GHz x 4 / Ram 15.6 Go / CG NVIDIA GF106GL [Quaro 2000]

zeb
Messages : 16473
Enregistré le : ven. 19 juin 2015 22:13
Localisation : plus ici

Re: Aide pour finaliser un script de nettoyage complet du système

Message par zeb »

Salut Mia ;)
viewtopic.php?f=19&t=15294&p=170836#p170836 c'est le même sujet ??

Avatar du membre
Mia88
Messages : 1355
Enregistré le : ven. 18 nov. 2016 08:42
Localisation : Lorraine

Re: Aide pour finaliser un script de nettoyage complet du système

Message par Mia88 »

Salut zeb ;)

Non non, dans le premier sujet, je posais quelques questions à TéMentheOuPas concernant son sujet précédent qui avait été clôturé
viewtopic.php?p=170063#p170063

Dans le sujet que je viens d'ouvrir, j'ai ajouté d'autres commandes pour parfaire le nettoyage 8-)

J'ai récupéré le nettoyage des fichiers de configuration obsolètes dans le script proposé par Michel26750 :

Code : Tout sélectionner

dpkg -l|grep "^rc"|awk '{print $2}'| xargs sudo dpkg --purge
En l'essayant, je me suis rendue compte qu'une ligne ne correspondait pas à ce qui est l'équivalent depuis Synaptic :

Code : Tout sélectionner

libqtcore4:amd64
Et je demande des infos sur cette ligne.

Je demande aussi quelles sont les commandes pour :
- supprimer les fichiers orphelins (qui sont encore autre chose)
- récupérer la liste des fichiers de configurations des logiciels désinstallés dans /home.

Et pour finir, j'aurais bien aimé qu'un utilisateur averti du terminal me dise si les commandes supplémentaires que j'ai ajoutées à mon script pour qu'il soit complet sont correctes et ne poseront pas de problèmes :

Code : Tout sélectionner

echo "Suppression des fichiers de sauvegarde..."
find $HOME/ -name '*~' -print0 | xargs -0 rm -f

Code : Tout sélectionner

echo "Suppression des miniatures de plus de 7 jours ..."
find ~/.thumbnails -type f -ctime +7 -delete

Code : Tout sélectionner

echo "Suppression des entrées de journaux de plus de 7 jours..."
journalctl –vacuum-time=7day

Code : Tout sélectionner

echo "Vidage du cache du navigateur..."
rm -rf /home/*/.cache/mozilla/firefox/*default/cache2
Voili, voilou :D
Mint Cinnamon 21.1 / Intel Xeon CPU E3-1270 V2 3.5GHz x 4 / Ram 15.6 Go / CG NVIDIA GF106GL [Quaro 2000]

zeb
Messages : 16473
Enregistré le : ven. 19 juin 2015 22:13
Localisation : plus ici

Re: Aide pour finaliser un script de nettoyage complet du système

Message par zeb »

Oki ;)

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Aide pour finaliser un script de nettoyage complet du système

Message par cyrille »

Hello
Très en vitesse, je regarderai mieux quand j'aurais le temps, dsl

Il faut uniformiser ton script
un coup tu utilises find avec xargs pour supprimer les résultats, un coup avec l'option -delete, choisis l'un ou l'autre. POur maintenir le script pense à fairre le plus simple et clair possible

Lecture rapide de ton script
je trouve bizarre le /*/*

Code : Tout sélectionner

rm -rf /home/*/.local/share/Trash/*/* &> /dev/null

je pense que cette suppression suavage est une mauvaise idée

Code : Tout sélectionner

#rm -f /tmp/*
ça, je serais pas par aptitude (option ~c)

Code : Tout sélectionner

dpkg -l|grep "^rc"|awk '{print $2}'| xargs sudo dpkg --purge
Je demande aussi quelles sont les commandes pour :
- supprimer les fichiers orphelins (qui sont encore autre chose)
Je ne comprends pas , tu peux reformuler ?

- récupérer la liste des fichiers de configurations des logiciels désinstallés dans /home.
chaud... certains sont dans .config , d'autres à la racine de /home/$USER (ex nano)..., certains ailleurs...

Pour le nettoyage, pas vraiment à l'user de le faire, c'est au packager d'empaqueter correctement ses skeuds ainsi que leur suppression...

Dsl en vitesse, mais pas trop le temps ce soir...

J'y retourne asap
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Aide pour finaliser un script de nettoyage complet du système

Message par cyrille »

au fait, tu devrais lire https://wiki.debian-fr.xyz/Nettoyer_sa_Debian
2 trucs intéressants

Code : Tout sélectionner

dpkg -P $(dpkg -l | awk '$1~/^rc$/{print $2}')

Code : Tout sélectionner

# aptitude purge ~c
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Aide pour finaliser un script de nettoyage complet du système

Message par cyrille »

2 - Je cherche pour compléter le nettoyage, une commande qui renvoie la liste des "fichiers orphelins" trouvés par deborphan,
pas sur de suivre...
Mais si j'ai compris bien ton souhait un simple redirection dans un fichier , non ?

Code : Tout sélectionner

root@fenrir:~# deborphan 
dnsutils:all
libapt-inst2.0:amd64
libbind9-161:amd64
libdns-export1107:amd64
libexecline2.5:amd64
libirs161:amd64
liblwres161:amd64
libprocps7:amd64
libre2-6:amd64
manpages-fr-extra:all
pdfshuffler:all
zlibc:amd64

Code : Tout sélectionner

root@fenrir:~# deborphan > list.deborphan

Code : Tout sélectionner

root@fenrir:~# cat list.deborphan 
dnsutils:all
libapt-inst2.0:amd64
libbind9-161:amd64
libdns-export1107:amd64
libexecline2.5:amd64
libirs161:amd64
liblwres161:amd64
libprocps7:amd64
libre2-6:amd64 
manpages-fr-extra:all
pdfshuffler:all
zlibc:amd64
Tu peux nettoyer avec cut et le delimitateur ":"

Code : Tout sélectionner

cat list.deborphan | cut -d ":"  -f 1
dnsutils
libapt-inst2.0
libbind9-161
libdns-export1107
libexecline2.5
libirs161
liblwres161
libprocps7
libre2-6
manpages-fr-extra
pdfshuffler
zlibc


Puis une boucle shell qui lit chaque ligne avec une action associée

Ce coup ci j'y vais ;), on voit ça plus tard
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
Mia88
Messages : 1355
Enregistré le : ven. 18 nov. 2016 08:42
Localisation : Lorraine

Re: Aide pour finaliser un script de nettoyage complet du système

Message par Mia88 »

Merci cyrille de t'intéresser au sujet ;)
cyrille a écrit :
jeu. 28 mai 2020 20:23
Il faut uniformiser ton script
un coup tu utilises find avec xargs pour supprimer les résultats, un coup avec l'option -delete, choisis l'un ou l'autre
Justement, je me demandais quelle est la meilleure méthode, je n'ai rien trouvé de précis sur le sujet alors j'ai laissé les deux, mais je trouve -delete plus parlant que xargs avec son print0
cyrille a écrit :
jeu. 28 mai 2020 20:23
je trouve bizarre le /*/*
Le dossier Trash contient 3 sous-dossiers, je comprends que la première étoile désigne l'ensemble des sous-dossiers, et la seconde en cas où il y aurait un niveau en dessous de ces sous-dossiers ?
Je l'ai vu également écrit avec 2 étoiles à la fin /*/** mais pas trouvé ce que signifient 2 étoiles consécutives :?
cyrille a écrit :
jeu. 28 mai 2020 20:43
je pense que cette suppression suavage est une mauvaise idée
Je l'ai commenté car c'est aussi ce qu'il m'a semblé, ça risque de supprimer un fichier temporaire en cours d'utilisation.
cyrille a écrit :
jeu. 28 mai 2020 20:23
Je demande aussi quelles sont les commandes pour :
- supprimer les fichiers orphelins (qui sont encore autre chose)

Je ne comprends pas , tu peux reformuler ?
J'ai crée un filtre dans Synaptic avec Deborphan, qui trouve comme fichiers orphelins :
Image

Je voudrais les supprimer à l'aide du script mais aucune idée des commandes à utiliser.

Je te réponds au fur et à mesure de ma lecture, je vois que ton message de 20:49 correspond exactement à ce que je voulais pour les fichiers orphelins, merci !! 8-)

Ok pour les fichiers de conf des logiciels désinstallés, à faire au fur et à mesure à la main

cyrille a écrit :
jeu. 28 mai 2020 20:23
ça, je serais pas par aptitude (option ~c)

Code : Tout sélectionner

dpkg -l|grep "^rc"|awk '{print $2}'| xargs sudo dpkg --purge
cyrille a écrit :
jeu. 28 mai 2020 20:43
au fait, tu devrais lire https://wiki.debian-fr.xyz/Nettoyer_sa_Debian
2 trucs intéressants

Code : Tout sélectionner

dpkg -P $(dpkg -l | awk '$1~/^rc$/{print $2}')

Code : Tout sélectionner

# aptitude purge ~c
C'est suite à cette lecture que je m'étais fait la réflexion qu'il faut s'entendre sur les fichiers "orphelins", pour ça que j'ai précisé
Mia88 a écrit :
jeu. 28 mai 2020 17:30
- supprimer les fichiers orphelins (qui sont encore autre chose)
Ceux dont il est question dans le lien vers debian-fr.xyz correspondent à cette partie du script :

Code : Tout sélectionner

echo "Suppression des résidus de logiciels supprimés..."
# correspond à Résidus de configuration dans Synaptic
dpkg -l|grep "^rc"|awk '{print $2}'| xargs sudo dpkg --purge
ce qui donne pour moi :

Code : Tout sélectionner

mia@PC5:~$ dpkg -l|grep "^rc"|awk '{print $2}'
apport
clamsmtp
libqtcore4:amd64
linux-image-4.15.0-66-generic
linux-image-4.15.0-70-generic
linux-image-4.15.0-72-generic
linux-modules-4.15.0-66-generic
linux-modules-4.15.0-70-generic
linux-modules-4.15.0-72-generic
linux-modules-extra-4.15.0-66-generic
linux-modules-extra-4.15.0-70-generic
linux-modules-extra-4.15.0-72-generic
linux-modules-extra-4.15.0-88-generic
linux-modules-extra-4.15.0-91-generic
onboard
mia@PC5:~$ 
Tandis que les fichiers orphelins que je voulais cibler sont ceux-là :
Image

Mais tu m'as donné la solution ;) :

Code : Tout sélectionner

deborphan > list.deborphan
cat list.deborphan
cat list.deborphan | cut -d ":"  -f 1
Par contre, je n'avais pas essayé

Code : Tout sélectionner

aptitude search ~c

puisque la commande

Code : Tout sélectionner

 dpkg -l|grep "^rc"|awk '{print $2}' 
fait la même chose
Je viens d'essayer, c'est identique (en plus détaillé).

Il me reste 2 petites questions et c'est fini ;)

1 - Tu as une idée de pourquoi

Code : Tout sélectionner

dpkg -l|grep "^rc"|awk '{print $2}'
ou encore

Code : Tout sélectionner

aptitude search ~c
liste libqtcore4:amd64 comme fichier de configuration obsolète tandis qu'en passant par Synaptic ce n'est pas le cas (les 14 autres sont identiques).

2 - Y a-t-il d'autres caches que celui d'apt à nettoyer, par exemple dans le dossier /home/user/.cache (ou ailleurs) ?

Encore merci pour tes conseils
Mint Cinnamon 21.1 / Intel Xeon CPU E3-1270 V2 3.5GHz x 4 / Ram 15.6 Go / CG NVIDIA GF106GL [Quaro 2000]

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Aide pour finaliser un script de nettoyage complet du système

Message par cyrille »

2 - Y a-t-il d'autres caches que celui d'apt à nettoyer, par exemple dans le dossier /home/user/.cache (ou ailleurs) ?
cache de la queue de la file d'impression, cache du serveur de mail (il me semble que tu en as un), pas un cache mais l'history des shells...
jette un oeil sur /var/spool/
Mais est ce utile de les tripatouiller, ça c'est une autre histoire...
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Aide pour finaliser un script de nettoyage complet du système

Message par cyrille »

ensuite nettoyer ses logs
ex, plus vieux que 30 jours

Code : Tout sélectionner

find /var/log -name "*.log" -type f -mtime +30 -exec rm -f {} \;
Mais bon pas sûr qu'il y ait beaucoup de gars qui s'amusent à ça...

Sinon jette un oeil https://crunchify.com/how-to-automatica ... sh-script/
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Répondre