Afficher juste la capacité des disques

xavyeii -  
 xavyeii -
Bonjour,

J'aurais aimé connaître la commande pour n'afficher que le nom du système de fichier et le % utilisé des disques sous redhat.

En utilisant
df -k
il m'affiche toutes les informations.

Je voudrais en fait créer un script qui informe l'utilisateur lorsque la capacité du disque dépasse 20%

Voilà j'espère avoir été suffisamment clair.
Merci par avance

Xavier
A voir également:

10 réponses

asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Bonjour

La commande
df |awk '{ print $1" "$5 }'
Te renvoit-elle ce que tu attends ?
awk '{ print $1 " " $5 }' affiche les champs 1 et 5

Dans tout les cas, pour ce que tu veux faire, il faudrait plutot mettre en place une politique de quotas, mais c'est une autre paire de manches.

A plus
0
xavyeii
 
Merci pour l'info !

T'as commande marche bien ;)

J'aimerais faire un test pour qu'il m'affiche un message lorsque la capacité dépasse 20%
j'ai fait ça :

OCC=(df|awk '{print$4}'|sed "s/%//")
if [ $OCC > "20" ]
then
    echo -e "\n! ATTENTION ! Un de vos FILES SYSTEM depasse les 20% !"
else
    exit
fi


Mais ça m'affiche "le shell a retourné 1"

=/

Merci..
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Mais ça m'affiche "le shell a retourné 1"

Ben... tu as mis ça dans un script ?
Si oui, comment executes-tu ce script, si non, c'est normal, tu demandes à ton shell de t'afficher un message si tu dépasses 20%, et de sortir sinon, comme il est obéissant, il le fait ;-)

Dans tout les cas, si tu enlève le else, ça fonctionnera
OCC=(df|awk '{print$4}'|sed "s/%//")
if [ $OCC > "20" ]
then
    echo -e "\n! ATTENTION ! Un de vos FILES SYSTEM depasse les 20% !"
fi
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,
if [ "$OCC" -gt "20" ]
;-))
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Ha oui, en plus de ne plus quitter le shell, ça envera un resultat correct :)
0
xavyeii
 
Il y a un problème au niveau de :

OCC=(df|awk '{print$4}'|sed "s/%//")


Erreur -> " line 11: syntax error near unexpected token '|' "
" line 11 : 'OCC=(df|awk '{print $4}'|sed "s/%//")' "


Mais si je rajoute des parenthèses comme suit, il ne m'affiche plus d'erreur :

OCC=(df)|(awk '{print$4}')|(sed "s/%//")


Puis le :

if [ "$OCC" -gt "20" ]


ou

if [ $OCC -gt "20" ]


m'affiche l'erreur suivante :

" line 61 : [: : integer expression expected "

Mais si je le remplace par ce qui suit, il ne m'affiche plus d'erreur :

if [ [ "$OCC" -gt "20" ]]


Mais le problème maintenant, c'est qu'il me dit rien (donc il a quitté la boucle) alors qu'il y en a qui dépasse 20% ..

Merci de votre aide =)
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Re,

Essayes avec
OCC=$(df|awk '{print$4}'|sed "s/%//")
et tu ne devrais plus avoir de soucis++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 41342 Statut Modérateur 4 896
 
OCC=$(df|awk '{print$4}'|sed "s/%//")

0
xavyeii
 
En effet il ne me met plus cette erreur..

Ca aurait été trop facile si ça aurait marché.. =/

Si je met (avec les ""):

if [ "$OCC" -gt "20" ]
then
    echo -e "\n! ATTENTION ! Un de vos FILES SYSTEM depasse les 20% de stockage !"
else
    echo -e "\nTous les FILES SYSTEM sont inferieurs a 20% !"
fi


Ca me renvoi :

" line 61: [:

18

6

35

3

9

4

4

4

4
221329
192780

4

4: integer expression expected "

" Tous les FILES SYSTEM sont inferieur a 20% ! "


Si je met (sans les ""):

if [ $OCC -gt "20" ]
then
    echo -e "\n! ATTENTION ! Un de vos FILES SYSTEM depasse les 20% de stockage !"
else
    echo -e "\nTous les FILES SYSTEM sont inferieurs a 20% !"
fi


Ca me renvoi :

" line 61: [: too many arguments"

" Tous les FILES SYSTEM sont inferieurs a 20% ! "


Dans tous les cas lorsque je fais un
df
j'obtiens :

Sys. de fich.        1K-blocs       Occupé Disponible Capacité Monté sur
/dev/mapper/vg_sys-lv_root
                       1015704    164724    798552  18% /
/dev/mapper/vg_sys-lv_var
                       2031440     98716   1827868   6% /var
/dev/mapper/vg_sys-lv_usr
                       2031440    657324   1269260  35% /usr
/dev/mapper/vg_sys-lv_opt
                       3047184     70220   2819680   3% /opt
/dev/mapper/vg_sys-lv_home
                         63461      5404     54781   9% /home
/dev/mapper/vg_sys-lv_tmp
                       2031440     69032   1857552   4% /tmp
/dev/mapper/vg_app-lv_logs
                       1015704     34096    929180   4% /logs
/dev/mapper/vg_app-lv_expl
                       1015704     34412    928864   4% /expl
/dev/mapper/vg_app-lv_prod
                       4062912    140852   3712348   4% /produits
/dev/hda1               256666     22085    221329  10% /boot
tmpfs                   192780         0    192780   0% /dev/shm
/dev/mapper/vg_app-lv_havane
                       1032088     34116    945544   4% /inst-havane
/dev/mapper/vg_app-lv_havane2
                       1032088     34112    945548   4% /inst-havane2


Et lorsque je fais un :
df|awk '{print $4}'

j'obtiens :

1K-blocs

18%

6%

35%

3%

9%

4%

4%

4%

4%
221329
192780

4%

4%


Il y a un problème là non ? =/

Merci de votre aide =)
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Peut être une autre solution à explorer...

En partant de cette sortie de "df -h" chez moi :
jp@MDK:~/tmpfs ssh$ df -h
Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur
/dev/hda2             6,9G  4,5G  2,4G  66% /
/dev/hda5             635M  602M   34M  95% /home
/dev/hda1             9,8G  8,6G  1,3G  88% /mnt/windows
none                  125M   24K  125M   1% /tmp
Voilà ce que j'obtiens avec cette simple ligne de commande :
jp@MDK:~/tmpfs ssh$ df -h | awk '/\// && $5 > 70 { print "Attention "$6" est supérieur à 70%" }'
Attention /home est supérieur à 70%
Attention /mnt/windows est supérieur à 70%
jp@MDK:~/tmpfs ssh$
A exploiter ;-))
0
xavyeii
 
Génial ! Ca marche (enfin presque xD) !

J'ai fait comme suit :

[toorist@ ~]# df -h|sed "s/%//"|awk '/\// && $4 > 20 {print "Attention "$5" est supérieur à 20%"}'


Résultat :

Attention /usr est supérieur à 20%
Attention 10 est supérieur à 20%


Pour RAPPEL :

[toorist@ ~]# df -h
Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur
/dev/mapper/vg_sys-lv_root
                      992M  161M  780M  18% /
/dev/mapper/vg_sys-lv_var
                      2,0G   97M  1,8G   6% /var
/dev/mapper/vg_sys-lv_usr
                      2,0G  642M  1,3G  35% /usr
/dev/mapper/vg_sys-lv_opt
                      3,0G   69M  2,7G   3% /opt
/dev/mapper/vg_sys-lv_home
                       62M  5,3M   54M   9% /home
/dev/mapper/vg_sys-lv_tmp
                      2,0G   68M  1,8G   4% /tmp
/dev/mapper/vg_app-lv_logs
                      992M   34M  908M   4% /logs
/dev/mapper/vg_app-lv_expl
                      992M   34M  908M   4% /expl
/dev/mapper/vg_app-lv_prod
                      3,9G  138M  3,6G   4% /produits
/dev/hda1             251M   22M  217M  10% /boot
tmpfs                 189M     0  189M   0% /dev/shm
/dev/mapper/vg_app-lv_havane
                     1008M   34M  924M   4% /inst-havane
/dev/mapper/vg_app-lv_havane2
                     1008M   34M  924M   4% /inst-havane2


Donc voilà je ne comprends pas le "10"

Merci de votre aide !
Je continue de voir ça demain !
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Le 10 il vient de là :
/dev/hda1             251M   22M  217M  10% /boot
Vu que sur cette ligne les champs ne sont pas au même endroit ;-((

Il faudrait faire une condition "if" dans awk pour traiter les lignes différentes...

0
xavyeii
 
Oui je voyais d'où venais le "10" mais je ne comprend pas pourquoi il y a 2 lignes qui ont un décalage.. =/

C'est embêtant pour la compréhension..

Je vais essayer de creuser ça quand j'aurais un peu de temps.. Si quelqu'un d'entre vous a une idée sur le sujet, je suis tout ouï =)
0