diskfree (df /) - Verbrauch in Variable filtern

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
K.I.T.T.
Beiträge: 104
Registriert: 14.11.2005 11:33:38

diskfree (df /) - Verbrauch in Variable filtern

Beitrag von K.I.T.T. » 24.01.2006 00:55:24

"df /" gibt bspw. sowas aus:
Filesystem 1K-blocks Used Available Use% Mounted on
- 4933156 3501148 1181408 75% /

Ich Versuche zu Zeit wie verrückt die 4 Werte in 4 Variablen zu trennen um sie dann über ein simples Bash-Script zu überwachen.

Am Ende möchte ich so arbeiten
v1=`df / | grep "/" | tr -d "/%-" | sed -s '/s(/n)'`
v2=`df / | grep "/" | tr -d "/%-" | sed -s '/s(/n)'`
v3=`df / | grep "/" | tr -d "/%-" | sed -s '/s(/n)'`
v4=`df / | grep "/" | tr -d "/%-" | sed -s '/s(/n)'`

Nur mit den "regulären ausdrücken" von/bei sed komme ich leider nicht zurecht. :-( (mir leider alles zu kryptisch)

Kann mir da jm. am folgenden Bsp. evtl. weiterhelfen den 3. Wert herauszufiltern?:

Code: Alles auswählen

echo "/dev/hda1                      4933156   3501148   1181408  75% /" |  tr -d "/%" | sed -s '???'
bzw.

Code: Alles auswählen

echo "-                      4933156   3501148   1181408  75% /" |  tr -d "/%" | sed -s '???'
Bemerkung:
Bei mir steht wg. XEN Standardmäßig "-" statt "/dev/hda1".
Wenn es geht würde ich gerne später beide Möglichkeit nutzen können, ohne es extra anpassen zu müssen.


Gruß

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 24.01.2006 07:54:22

Wenn man mit tr -s " " die zusätzlichen Leerzeichen eliminiert, kann man mit cut recht einfach auf die Felder zugreifen:

Code: Alles auswählen

echo "/dev/hda1                      4933156   3501148   1181408  75% /" |  tr -s " " | cut -d " " -f 3
3501148
Gruss, mistersixt
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE

K.I.T.T.
Beiträge: 104
Registriert: 14.11.2005 11:33:38

Beitrag von K.I.T.T. » 24.01.2006 09:23:34

Prima
Und das gleich ohne sed. *freu*
Vielen Dank und Gruß


Falls es jm. interessiert und für mein persönlich Archiv im Forum:

Code: Alles auswählen

#/bin/bash
v1=`df / | grep "/" | tr -d "%" | tr -s " " | cut -d " " -f 1`
v2=`df / | grep "/" | tr -d "%" | tr -s " " | cut -d " " -f 2`
v3=`df / | grep "/" | tr -d "%" | tr -s " " | cut -d " " -f 3`
v4=`df / | grep "/" | tr -d "%" | tr -s " " | cut -d " " -f 4`
v5=`df / | grep "/" | tr -d "%" | tr -s " " | cut -d " " -f 5`
vv4=`df -h / | grep "/" | tr -d "%" | tr -s " " | cut -d " " -f 4`
if [ $v4 -lt 524288 ]; then
    mutt -n -F /dev/null -s "Speicherreserven zu niedrig ($v4 / $vv4)" mustermail@mustadresse.com < /dev/null
    echo "Speicherreserven zu niedrig ($v4 / $vv4)"
fi

Methusalix

diskfree (df /) - Verbrauch in Variable filtern

Beitrag von Methusalix » 25.01.2006 16:44:51

Hallo,

ich hätte da noch eine Alternative zu bieten:

Code: Alles auswählen

df / | grep ^/ | awk '{ print $1, $5 }'
/dev/hda3 80%
Du könntest dann in einem Skript direkt auf die Stellungsparameter - hier $1 für Dateisystem und $5 für die Belegung zugreifen. Außerdem ist das besser auf ähnliche Fragestellungen anpaßbar.

Gruß
Matthias

P.S. Ich finde es toll, das Du Deine komplette Lösung noch mal für andere gepostet hast.

Antworten