Procédure pour nettoyer sa Debian

[quote=“MisterFreez”]Si vraiment tu veut le faire tenir en une ligne :

En effet j’ai oublié de remplacer le nom de la variable dans la redirection de du.

Bon ! je passe pour cette fois mais attention, la prochaine fois que tu oublies quelque chose de si important, tu copieras 100 fois :
"je dois relire mon travail avant de le présenter"
Plus sérieusement, maintenant, ça fonctionne mais je préférerais le tri à l’envers : + gros en premier. Possible ?

Chef ! Oui ! Chef !

Si je peux conseiller l’utilisation d’un script shell :

[code]#!/bin/sh

parse_size ()
{
awk -v car="$2" -v name="$3" ‘$1~car{ gsub(car, “”, $1); print $1"\t"name"\t"$2}’ “$1” | sort -rg
echo
}

fichier=$(mktemp)

du -Dhs $1/* > ${fichier}

parse_size “${fichier}” ‘T’ 'Tio’
parse_size “${fichier}” ‘G’ 'Gio’
parse_size “${fichier}” ‘M’ 'Mio’
parse_size “${fichier}” ‘K’ ‘Kio’

#rm “${fichier}”[/code]

Si je m’autorisais à utiliser bash je ferais ainsi :

[code]#!/bin/bash

méthode qui affiche les fichiers d’une puissance donnée

parse_size ()
{
awk -v car="$2" -v name="$3" ‘$1~car{ gsub(car, “”, $1); print $1"\t"name"\t"$2}’ “$1” | sort -rg
echo
}

les plus gros systèmes de fichiers grands publiques acceptants des volumes

de 16Eio maximum (je ne sais pas pour lustre et glusterfs) je considère que

se limiter à 900Eio est suffisant

Attention l’ordre des déclarations est importante

declare -A sizes
sizes[E]='Eio’
sizes[T]='Tio’
sizes[G]='Gio’
sizes[M]='Mio’
sizes[K]=‘Kio’

fichier=$(mktemp)

du -Dhs $1/* > ${fichier}

for i in “${!sizes[@]}” ; do
parse_size “${fichier}” “$i” "${sizes[$i]}"
done

rm “${fichier}”[/code]
Sauf que l’utilisation d’un fichier est dommage on devrait pouvoir l’éviter en modifiant l’IFS et en mettant tout dans un tableau. Mais je ne ferrai pas ça maintenant.

fr.wikipedia.org/wiki/UUOC#Cat_et_UUOC[/quote]
Merci c’est bien intéressant les UUOC. Il me semblait que les redirections en entrée ne fonctionnaient pas avec toutes les commandes (j’en suis même quasiment sûr), c’est pourquoi je ne les utilisais plus, mais va faloir que je revois tout ça + en détail et que j’identifie les coupables et que je comprenne pourquoi elles se comportent comme ça.

J’ai essayé toute tes commandes et scripts et ça marche bien, bravo :023 je vais me pencher sérieusement là dessus (pas eu 1 seconde depuis ce matin), par contre avec find j’avais aussi les répertoires .cachés (en fait j’avais tous les rép de 1er niveaux, cachés ou pas, liens symboliques ou pas, comme annoncé en somme :mrgreen: )

Je ne sais pas si on peut avoir ça avec “du” sans se farcir les fichiers normaux aussi (dont je ne veux pas).

C’est un peu pour ça que j’utilise systématiquement find : je sais un peu m’en servir ( bien que je ne maîtrise tjs pas cette foutue commande de #@${! :017 )

Gi, Mi, Ki, c’est pour dire puissance de 1024 ? si tu voulais dire puissance de 1000 tu aurais mis G, M, K, c’est bien ça ? et c’est dorénavant normalisé ? (fdisk dit : Disk /dev/sda: 160 GB, 160039272960 bytes et ça, ça a le don de m’énerver ! parce que pour moi 160 GB -> 171798691840 bytes, bon c’est pas grave pffff )

A Ricardo : il est bien beau ton établi !

Allez, ciao by-by :033

fr.wikipedia.org/wiki/UUOC#Cat_et_UUOC[/quote]
Merci c’est bien intéressant les UUOC. Il me semblait que les redirections en entrée ne fonctionnaient pas avec toutes les commandes (j’en suis même quasiment sûr), c’est pourquoi je ne les utilisais plus, mais va faloir que je revois tout ça + en détail et que j’identifie les coupables et que je comprenne pourquoi elles se comportent comme ça.[/quote]

cat fic | cmd

est strictement équivalent à

cmd < fic

Mais beaucoup de commande permettent d’écrire :

cmd fic

[quote=“Rantanplan aussi !”]J’ai essayé toute tes commandes et scripts et ça marche bien, bravo :023 je vais me pencher sérieusement là dessus (pas eu 1 seconde depuis ce matin), par contre avec find j’avais aussi les répertoires .cachés (en fait j’avais tous les rép de 1er niveaux, cachés ou pas, liens symboliques ou pas, comme annoncé en somme :mrgreen: )

Je ne sais pas si on peut avoir ça avec “du” sans se farcir les fichiers normaux aussi (dont je ne veux pas).

C’est un peu pour ça que j’utilise systématiquement find : je sais un peu m’en servir ( bien que je ne maîtrise tjs pas cette foutue commande de #@${! :017 )[/quote]

du -Dhs * .*

devrait suffir non ?

En effet :
fr.wikipedia.org/wiki/Pr%C3%A9fixe_binaire

On ne s’instruit jamais assez :
univers-libre.net/index.php/2010 … -dun-du-h/
Donc un du -Dsh * .* | sort -rh

Les UUOC ont déjà tuées qui ?

Je suis quasiment sûr qu’il y a des commandes qui n’acceptent pas cette forme:

commande < fichier

Je vais chercher. Par contre je ne connais pas de commande qui n’accepte pas cette forme :

commande fichier

si la commande est censé traiter des fichiers évidemment.

[quote=“MisterFreez”]En effet :
fr.wikipedia.org/wiki/Pr%C3%A9fixe_binaire[/quote]
Dommage que tout le monde ne suivent pas ces règles, enfin bref … mais merci pour la confirmation (que je continerais à m’énerver pour rien là dessus, mais pas à cause de toi en tout cas !)

[quote]du -Dsh * .*
du -Dsh * .* | sort -rh[/quote]
Ben non, parce que comme je te le disais + haut ça me sort aussi .bashrc par exemple (dont je n’ai cure lorsque je cherche à savoir quel rép. prends de la place )

Le pire c’est que .* fait redescendre dans le répertoire parent !

Non, décidemment, j’aime pas ces * .* et autre globbing machin chose imprévisibles ! je reste sur mon find et mes regex qui sont fiables (enfin pour moi) et j’embauche ton awk pour finir élégament le travail de du : ça c’est du bon job d’équipe. En tout cas je ne vais pas m’enregistrer sur univers-libre.net/index.php/2010 … -dun-du-h/
juste pour aller leur dire que leur commande ne permet pas de connaitre la taille des rép .cachés … et que je doute que des admins sérieux emploient une commande qui ne leur dit pas tout ce qu’ils voudraient savoir.

find -maxdepth 1 \! -iname '.' -type d

est une commande simple qui me donne vraiment ce que je veux :

-cherche ( à partir du rep courant ) sans descendre dans les sous-répertoires et en excluant le fichier ‘.’ : tous les fichiers qui soient de type répertoire

Comment faire + simple ?

En plus c’est rapide parce qu’on ne descent pas dans les sous-rép.

Je me demande seulement pourquoi cette commande ne me sort pas le rép parent ‘…’ , parce qu’il ne faut pas croire que ce soit là l’oeuvre de :

\! -iname '.' qui demande uniquement que le fichier ‘.’ ne fasse pas partie des élus ( parce que j’en veux pas de ‘.’ )

Mais ça tombe bien j’en veux pas non plus du ‘…’

ls -a|grep '\.$' . ..

find -maxdepth 1 |grep '\.$' .

find -maxdepth 1 -name '..'

Bon, ces petits essais (une première pour moi) montrent que par défaut find ne sort pas ‘…’ , c’est trés bien comme ça. Et c’est logique en fait.

Une fois que j’ai sélectionné mes fichiers avec find je peux passer à l’étape suivante avec du , puis enchaîner avec ton awk. Ça ça me plait bien parce que c’est clair, fiable et simple. Merci encore pour tes exemples et explications : ça m’est bien utile ! :stuck_out_tongue:

Bon, Morphée s’impatiente, il ne faut pas la faire attendre … sinon gare :mrgreen:

Il n’y a pas grand chose parce que tu n’y as rien mis… :075
Nous t’attendions… :005

Edit: Parce que ce que vous postez ici est perdu… noyé dans le forum.
Centralisé sur le Wiki l’information est facilement accessible et utile au plus grand nombre.

Les bébés chats (tu ne connais pas ce mème ?).

[quote=“Rantanplan aussi !”][quote]du -Dsh * .*
du -Dsh * .* | sort -rh[/quote]
Ben non, parce que comme je te le disais + haut ça me sort aussi .bashrc par exemple (dont je n’ai cure lorsque je cherche à savoir quel rép. prends de la place )

Le pire c’est que .* fait redescendre dans le répertoire parent ![/quote]
Mal testé désolé. bash et zsh se comportent différement.

[quote=“Rantanplan aussi !”]Non, décidemment, j’aime pas ces * .* et autre globbing machin chose imprévisibles ! je reste sur mon find et mes regex qui sont fiables (enfin pour moi) et j’embauche ton awk pour finir élégament le travail de du : ça c’est du bon job d’équipe. En tout cas je ne vais pas m’enregistrer sur univers-libre.net/index.php/2010 … -dun-du-h/
juste pour aller leur dire que leur commande ne permet pas de connaitre la taille des rép .cachés … et que je doute que des admins sérieux emploient une commande qui ne leur dit pas tout ce qu’ils voudraient savoir.

find -maxdepth 1 \! -iname '.' -type d

est une commande simple qui me donne vraiment ce que je veux :

-cherche ( à partir du rep courant ) sans descendre dans les sous-répertoires et en excluant le fichier ‘.’ : tous les fichiers qui soient de type répertoire

Comment faire + simple ?

Je me demande seulement pourquoi cette commande ne me sort pas le … parce qu’il ne faut pas croire que ce soit là l’oeuvre de :

\! -iname '.' qui demande simplement que le fichier ‘.’ ne fasse pas partie des élus ( parce que j’en veux pas de . )

Mais ça tombe bien j’en veux pas non plus du ‘…’

ls -a|grep '\.$' . ..

find -maxdepth 1 |grep '\.$' .

find -maxdepth 1 -name '..'

Bon, ces petits essais (une première pour moi) montrent que par défaut find ne sort pas … , c’est trés bien comme ça. Et c’est logique en fait.

Une fois que j’ai sélectionné mes fichiers avec find je peux passer à l’étape suivante avec du , puis enchaîner avec ton awk. Ça ça me plait bien parce que c’est clair, fiable et simple. Merci encore pour tes exemples et explications : ça m’est bien utile ! :stuck_out_tongue:

Bon, Morphée s’impatiente, il ne faut pas la faire attendre … sinon gare :mrgreen:[/quote]
Perso j’utilise find que quand j’ai besoin de performance (avec un pipe est une action “lourde” pour chaque fichier derrière).
Du coup si je veux tout les fichiers du répertoire courant (pas de dossier, fichier caché ou non) :

du *(.D)

Si je veux pas les fichier cachés :

du *(.)

Si je ne veux que les répertoires cachés ou non :

du *(/D)

Si je ne veux pas les dossiers cachés :

du *(/)

C’est pas forcément très intuitif au début, mais dès que tu as pris le plis il n’y a plus de problème. Pour des condition plus complexes il y a aussi (j’ai le droit d’exécuter le fichier, le fichier m’appartiens, etc).

[quote=“lol”]Il n’y a pas grand chose parce que tu n’y as rien mis… :075
Nous t’attendions… :005[/quote]
On est bien d’accord ! D’un autre coté j’ai peut-être tord mais je m’en sers jamais du Wiki (je fais rien de bien compliqué ), alors je le connais pas,je vais tâcher de le fréquenter un peu dans un premier temps, mais quand ?

Une simple recherche google: nettoyage debian, donne ça google.fr/#hl=fr&cp=9&gs_id= … 24&bih=444

Yes, faut peut-être juste créer un fil concernant le problème du Wiki, peut-être qu’il y en a qui ont de bonnes idées ? Parce que je crois que ce pb de Wiki se retrouve sur tous les sites ? ou je me trompe ? si c’est le cas faut se poser des questions (j’en sais rien, j’y connais rien à tout ça)

Bon, j’enfiles mes palmes, mon maillot de bain, mon tubas, je saute dans un avion (dans cette tenue) et j’arrive à Mada, ya du bon soleil et des gens souriants là bas, rouspète pas trop! :stuck_out_tongue:

Les bébés chats (tu ne connais pas ce mème ?).[/quote]
Jamais entendu parler (ou j’avais la tête dans les nuages comme d’hab) ! ya des tas de trucs qui se font sans que je sois tenu au courant, apparemment ! y s’exagèrent quand même ! :017

[quote=“MisterFreez”]
Perso j’utilise find que quand j’ai besoin de performance (avec un pipe est une action “lourde” pour chaque fichier derrière).

Du coup si je veux tout les fichiers du répertoire courant (pas de dossier, fichier caché ou non) :

du *(.D)

Si je veux pas les fichier cachés :

du *(.)

Si je ne veux que les répertoires cachés ou non :

du *(/D)

Si je ne veux pas les dossiers cachés :

du *(/)

C’est pas forcément très intuitif au début, mais dès que tu as pris le plis il n’y a plus de problème. Pour des condition plus complexes il y a aussi (j’ai le droit d’exécuter le fichier, le fichier m’appartiens, etc).[/quote]

Bon excuses moi, c’est vraiment pas pour t’embêter, sérieux, mais même le shell trouve pas ça intuitif :

[code]du *(.D)
du: impossible d’accéder à « *(.D) »: Aucun fichier ou dossier de ce type

$ du *(.)
du: impossible d’accéder à « *(.) »: Aucun fichier ou dossier de ce type

$ du *(/D)
du: impossible d’accéder à « *(/D) »: Aucun fichier ou dossier de ce type

$ du *(/)
du: impossible d’accéder à « *(/) »: Aucun fichier ou dossier de ce type
[/code]
Je sens que tu vas devoir subir la punition promise par Ricardo :laughing:

Tu vas trouver que je suis têtu peut-être mais au moins mon find fonctionne, action lourde ou pas, et en plus je ne me pose pas de question et c’est réglé.

Par ailleurs je n’ai aucune idée des temps d’exécution pour les performances etc…, je suis comme un gamin qui a quelques jouets qu’il aime bien et qui ne veut pas en changer pour d’autres, mais il y a ce jouet qui me plait bien : awk mais j’ai jamais le temps de m’amuser avec, grrrr

Ciao byby

Salut Rantanplan,

[quote]
Yes, faut peut-être juste créer un fil concernant le problème du Wiki[/quote]

debian-fr.org/wiki-t25401.html

[quote=“ggoodluck47”]Salut Rantanplan,

[quote]
Yes, faut peut-être juste créer un fil concernant le problème du Wiki[/quote]

debian-fr.org/wiki-t25401.html[/quote]
Bonsoir ggoodluck47 :stuck_out_tongue:

Yes ! je suis un peu jeune ici et sur les forums en général : je ne connais pas en fait, malgrés mes 11 ans d’internet j’ai jamais participé, je suis trop timide :mrgreen:

Houlala, tout ça à lire, ça me met en joie :liar: :stuck_out_tongue:

Hmmm … même pas encore eu le temps d’étudier les solutions de MisterFreez (juste survolées et testées).

Mais ça fait trop longtemps qu’awk attend, et je constate dans ce fil que ça m’handicape sérieusement de ne pas l’avoir dans ma boite à jouets … le Wiki patientera bien encore un peu, aprés tout ça ne fait qu’un mois et quelques bidules que je vous lis finalement (et avec beaucoup de plaisir :slightly_smiling: ), je ne vais pas tout de même pas culpabiliser !

Ciao byby

Salut MisterFreez,

J’ai enfin étudié ton élégante solution, elle m’a montrée les énormes erreurs que j’ai commises pour élaborer ma fameuse “commande”. Je ne devais pas avoir les idées claires ! ( Franchement on pourrait penser que j’avais bu ! mais non pas du tout )

Voici ce que j’arrive finalement à obtenir en combinant mktemp, find, du, sed, for, sort et rm. Finalement awk n’est pas nescessaire (mais pourquoi pas), ce qui l’est c’est de réfléchir correctement …

Je laisse ma première “commande” inchangée (puisqu’elle fonctionne quand même) de façon à ce que tes remarques qui ont suivies restent pertinentes.

fichier=$(mktemp) ; find -L -maxdepth 1 \! -iname '.' -type d -exec du -Dhs '{}' \; | sed 's@^\(.*[[:digit:]]\+\)\([KMG]\)@\1\t\2io@' > ${fichier} ; for unit in G M K ; do sed -n "/${unit}io/p" ${fichier} |sort -gr ; echo ; done ; rm ${fichier}
Ça donne ça sur ma squeeze :

30	 Gio	./documents
...	Gio	...
3,1	Gio	./musique
1,4	Gio	./.icedove

149	Mio	./ceci
110	Mio	./cela
...	Mio	.......
1,4	Mio	./.gconf

956	Kio	./.local
...	Kio	...
4,0	Kio	./Documents

C’est infiniment + joli. Merci pour ton apport, ça fait un bail que j’ai pas vraiment codé …

Salut

Salut
Un outil qui présente bien, installation facile sur Debian Stretch