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

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
Merci d'avance et bon appétit,
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
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
Merci d'avance et bon appétit,
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
Le 27/02/2013 12:15, Sylvain MEDEOT a écrit :
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/
écrit :
’jour,
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.).
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/
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/