Bash-skript abfrage

Hallo,

wie mache ich denn in einem Bash-Skript eine Abfrage, die mir sagt ob /dev/hda2 >= 80% (Auswertung aus: df /dev/hda2) benutzt ist?

if [???]; then
Anweisung
fi

Grüsse
K.

Hallo Klaus.

wie mache ich denn in einem Bash-Skript eine Abfrage, die mir
sagt ob /dev/hda2 >= 80% (Auswertung aus: df /dev/hda2)
benutzt ist?

Zum Beispiel mit folgendem Einzeiler:

$ dev=/dev/sda5; max=60; usage=$(df $dev | awk 'NR == 2 { print $5; }' | sed -e 's/%//'); if (( $usage \> $max )); then echo "ALARM"; fi
ALARM

Hier noch meine verwendete df-Ausgabe sowie die Programmversionen:

$ df /dev/sda5
Dateisystem 1K-Blöcke Benutzt Verfügbar Ben% Eingehängt auf
/dev/sda5 20641788 13038732 6554416 67% /

$ echo $BASH\_VERSION
3.1.16(1)-release

$ awk --version
GNU Awk 3.1.5

$ sed --version
GNU sed Version 4.1.4

Gruß,
-Andreas.

Hi,

wie mache ich denn in einem Bash-Skript eine Abfrage, die mir
sagt ob /dev/hda2 >= 80% (Auswertung aus: df /dev/hda2)
benutzt ist?

Als besonderen Fallstrick gibt’s da noch, dass df die Ausgabe eines devices gerne auch mal auf zwei Zeilen darstellt, wenn der devicename zu lang wird.

if [???]; then
Anweisung
fi

Ich wuerde es daher ungefaehr so:

if ["`df /dev/hda2 |tail -n1 |sed 's/^.* \([0-9]*\)%.*$/\1/'`" -gt 90 ]; then echo "Papierkorb leeren."; fi

oder, wenn man keine Scheu vor verknotetem sed hat, so:

if ["`df /dev/hda2 |sed -n '${s/^.* \([0-9]*\)%.*$/\1/;p}'`" -gt 90 ]; then echo "Papierkorb leeren."; fi

machen

HTH,
Gruss vom Frank.

Hallo,

… und vielen Dank.
Das hat mir weiter geholfen :o)

Grüsse
K

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]