[Bash linux] taille de repertoire et conditions

Astuces & entraides techniques...

Moderator: PoToS @dmins CS

Post Reply
VinZ**
~ PoToS @dmin ~
Posts: 1809
Joined: 07 Apr 2003 01:26
Location: Dans ch'nord
Contact:

[Bash linux] taille de repertoire et conditions

Post by VinZ** »

Hello,

Est ce que une ame charitable pourrait m'aider car je galere trop a faire ce script.....

Code: Select all

si espace disque restant < 25% 
then 
action a entreprendre (ca c bon je sais quoi faire ^^)
fin si
Serveur TeamSpeak3 32 places > ts.lespotos.fr pass: lespotos
Serveur Mumble > ts.lespotos.fr pass: lespotos
Teyut
~ PoToS @dmin ~
Posts: 1066
Joined: 14 Apr 2003 22:55
Location: au tournant de ma vie ...

Don't get stuck, baby sister, leave this land ...

Post by Teyut »

Tu peux récupérer la taille occupée sur un HDD à l'aide de la commande df. Donc en traitant la sortie de cette commande (via un cut pour sélectionner la bonne colonne, et un tail pour virer le titre des colonnes), tu peux savoir combien il reste de place :)

L'affichage de la commande df varie probablement d'une distribution à l'autre, mais sous debi@n, tu peux faire un truc comme ça:

Code: Select all

#!/bin/bash

HDD="/dev/sda1";
MAX=75;

if [ `df $HDD | cut -b 52-54 | tail -n 1` -gt $MAX ]; then
        # action a entreprendre (ca c bon je sais quoi faire ^^)
        echo oui
fi
Reste à spécifier le bon HDD, la bonne taille max, et adapter les paramètres de la commande cut pour ta distribution ;)

Maintenant, si ce qui t'intéresse c'est la taille d'un répertoire (cf. ton titre), c'est la commande du, mais le principe reste vaguement le même.
++ Teyut
VinZ**
~ PoToS @dmin ~
Posts: 1809
Joined: 07 Apr 2003 01:26
Location: Dans ch'nord
Contact:

Re: [Bash linux] taille de repertoire et conditions

Post by VinZ** »

Code: Select all

#!/bin/bash

HDD="/dev/sda2";
MAX=75;

var=$(df $HDD | cut -b 41-42 | tail -n 1)
echo $var

if [ `df $HDD | cut -b 41-42 | tail -n 1` -gt $MAX ]; then
        echo oui
else
        echo non
fi
voila je l'ai adapté pour moi mais ca ne fonctionne pas dans le script, uniquement en ligne de commande

Code: Select all

df $HDD | cut -b 41-42 | tail -n 1
donne 33

mais le script donne une erreur car la valeur est vide !!!?!

Code: Select all

[root@xxx scripts]# sh testhd.sh

testhd.sh: line 9: [: -gt: unary operator expected
non
Serveur TeamSpeak3 32 places > ts.lespotos.fr pass: lespotos
Serveur Mumble > ts.lespotos.fr pass: lespotos
Teyut
~ PoToS @dmin ~
Posts: 1066
Joined: 14 Apr 2003 22:55
Location: au tournant de ma vie ...

Re: [Bash linux] taille de repertoire et conditions

Post by Teyut »

Essaies de voir ce que te donne la commande "df /dev/sda2" dans ton script alors ? Ya pas vraiment de raison que ça soit différent de ta ligne de commande, sauf peut-être si ta commande df est ré-écrite par un alias :?

Sinon, tu peux y aller à la bourrin, en testant différentes valeurs pour les paramètres du cut dans ton script, jusqu'à ce que ça marche :D
++ Teyut
crapule
Mystere 2009
Posts: 1498
Joined: 16 Nov 2003 22:24
Location: No Brain's Land
Contact:

Re: [Bash linux] taille de repertoire et conditions

Post by crapule »

pour la communaute :)

Code: Select all

#!/bin/bash

HDD="/dev/sda2";
MAX=75;

var=$(df $HDD | cut -b 41-42 | tail -n 1)
echo $var

if [ `df $HDD | tail -n 1 | sed 's/%//' | awk '{print $5}'` -gt $MAX ]; then
        echo oui
else
        echo non
fi

le mieux etant :

Code: Select all

#!/bin/bash

HDD="/dev/sda2";
MAX=75;

MYSPACE=`df $HDD | tail -n 1 | sed 's/%//' | awk '{print $5}'`;

if [ $MYSPACE  -gt $MAX ]; then
        echo oui
else
        echo non
fi
Comme ca le resultat de la commande est exploitable :)
VinZ**
~ PoToS @dmin ~
Posts: 1809
Joined: 07 Apr 2003 01:26
Location: Dans ch'nord
Contact:

Re: [Bash linux] taille de repertoire et conditions

Post by VinZ** »

crapule style ^^

merci à vous 2 ! ca fonctionne a merveille =)
Serveur TeamSpeak3 32 places > ts.lespotos.fr pass: lespotos
Serveur Mumble > ts.lespotos.fr pass: lespotos
Post Reply