Différence entre Squeeze et Wheezy dans l'exécution d'une commande

3 réponses
Avatar
Sylvain MEDEOT
Bonjour la liste,

Sur un de mes serveurs, je souhaite r=E9cup=E9rer l'occupation disque sur=
un volume mont=E9 =20
dans backup.

J'ex=E9cute donc la commande :

Sous Squeeze
TAILLE=3D`/bin/df | /bin/grep \/backup | /usr/bin/awk '{printf ("%s",$4)}=
' | /bin/sed 's/%//g'`

Sous Wheezy je dois changer le num=E9ro de colonne pour awk de 4 en 5...
TAILLE=3D`/bin/df | /bin/grep \/backup | /usr/bin/awk '{printf ("%s",$5)}=
' | /bin/sed 's/%//g'`

Donc ma question est la suivante... Pourquoi ?

Auriez vous une autre solution pour r=E9cup=E9rer cette valeur ? Je suis =
sur que oui...

Merci d'avance et bon app=E9tit,

Sylvain



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/512DEAD5.1090405@yahoo.fr

3 réponses

Avatar
Jean-Jacques Doti
Bonjour,

Le 27/02/2013 12:15, Sylvain MEDEOT a écrit :
Bonjour la liste,

Sur un de mes serveurs, je souhaite récupérer l'occupation disque sur
un volume monté dans backup.

J'exécute donc la commande :

Sous Squeeze
TAILLE=`/bin/df | /bin/grep /backup | /usr/bin/awk '{printf
("%s",$4)}' | /bin/sed 's/%//g'`

Sous Wheezy je dois changer le numéro de colonne pour awk de 4 en 5...
TAILLE=`/bin/df | /bin/grep /backup | /usr/bin/awk '{printf
("%s",$5)}' | /bin/sed 's/%//g'`

Donc ma question est la suivante... Pourquoi ?

Auriez vous une autre solution pour récupérer cette valeur ? Je suis
sur que oui...


En fait, le bon comportement est celui que tu as sous Wheezy : le
pourcentage d'occupation du FS est bien le 5ème champ. Ce qu'il se
passe, c'est que sous squeeze, df affiche les informations d'un FS sous
deux lignes lorsque le chemin du device (premier champ) est trop long
afin de garder visuellement alignées les différentes colonnes. Cela rend
difficile l'analyse de la sortie du df par des programmes.
Afin d'éviter ces inconvénients, il faut utiliser l'option -P
(--portability : format POSIX) : les informations d'un FS sont alors
toutes sur la même ligne, séparées par des tabulations et le pourcentage
d'occupation est toujours le 5ème champ.
Avec la version de df (paquet coreutils) sous wheezy, l'affichage POSIX
se fait par défaut, ce qui explique le changement de comportement.

Moralité : il faut *toujours* utiliser l'option -P de df lorsqu'on
l'utilise dans des scripts.

A+
Jean-Jacques

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Sylvain L. Sauvage
Le mercredi 27 février 2013 à 14:25:40, Jean-Jacques Doti a
écrit :
Bonjour,



’jour,

[…]
> TAILLE=`/bin/df | /bin/grep /backup | /usr/bin/awk
> '{printf ("%s",$4)}' | /bin/sed 's/%//g'`



Arggh ! Faudrait choisir, grep, awk ou sed, les trois à la
suite c’est — euh, restons poli — affreux !

Choisis-en un !

grep :

LANG=C /bin/df -P |
grep -F /backup | # bonne ligne (pas besoin de )
grep -o '[0-9]+%' | # seulement la colonne %
grep -o '[0-9]+' # seulement les chiffres

(Pas ma préférée…)

awk :

LANG=C /bin/df -P |
awk '//backup/ { sub("%", "", $5); print $5 }'

# sur les lignes contenant /backup,
# enlève le % du 5e champ
# imprime le 5e champ

sed :

LANG=C /bin/df -P |
/bin/sed -ne '//backup/ {s/.*s([0-9]*)%.*/1/;p}'

-n = ne pas imprimer
//backup/ = ne traiter que les lignes contenant /backup
{ s/…//; p } = appliquer la substitution (s) puis imprimer (p)
s/…/1/ = récupérer seulement les chiff res entre
un espace (s) et le %


J’aurais tendance à le faire avec sed mais je me rends compt e
que awk est plus clair…

Hmm, awk est sans doute aussi le plus robuste si [0-9]% peut
se trouver ailleurs dans la ligne (autre montage p.ex.).

[…]
Avec la version de df (paquet coreutils) sous wheezy,
l'affichage POSIX se fait par défaut, ce qui explique le
changement de comportement.

Moralité : il faut *toujours* utiliser l'option -P de df
lorsqu'on l'utilise dans des scripts.



Et aussi toujours bien placer la locale (LANG=C pour rester
POSIX), ça évite d’avoir des résultats très biz arres, p.ex.
quand on attend des points et qu’on a des virgules ou que l†™on
cherche 'addr' alors qu’il n’y a que 'adr'…

--
Sylvain Sauvage

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Bruno Muller
Hello,

On peut aussi aller chercher l'info un peu plus à la source et faire le
calcul :

stat -f -c "(%b-%f)*100/%b" /backup | bc

Bruno
--
LA NATURE EST BIEN FAITE
P : À quoi ça sert, le rouge sur les ongles de pieds ?
M : À faire croire aux insectes attirés par l'odeur... que les doigts de
pieds sont vénéneux et qu'il ne faut pas les butiner.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/