#!/bin/bash
source /etc/profile
# Device to check
devname="/dev/sdb1"
let p=`df -k $devname | grep -v ^File | awk '{printf ("%i",$3*100 / $2); }'`
if [ $p -ge 90 ]
then
df -h $devname | mail -s "Low on space" [email protected]
fi
Crontab, um dies so oft auszuführen, wie Sie eine Benachrichtigung wünschen
EDIT:Für mehrere Festplatten
#!/bin/bash
source /etc/profile
# Devices to check
devnames="/dev/sdb1 /dev/sda1"
for devname in $devnames
do
let p=`df -k $devname | grep -v ^File | awk '{printf ("%i",$3*100 / $2); }'`
if [ $p -ge 90 ]
then
df -h $devname | mail -s "$devname is low on space" [email protected]
fi
done
Ich habe versucht, Eriks Antwort zu verwenden, hatte aber Probleme mit Geräten mit langen Namen, die die Zahlen umbrechen und dazu führen, dass das Skript fehlschlägt. Außerdem sah die Mathematik für mich falsch aus und stimmte nicht mit den von df
gemeldeten Prozentsätzen überein selbst.
Hier ist eine Aktualisierung seines Skripts:
#!/bin/bash
source /etc/profile
# Devices to check
devnames="/dev/sda1 /dev/md1 /dev/mapper/vg1-mysqldisk1 /dev/mapper/vg4-ctsshare1 /dev/mapper/vg2-jbossdisk1 /dev/mapper/vg5-ctsarchive1 /dev/mapper/vg3-muledisk1"
for devname in $devnames
do
let p=`df -Pk $devname | grep -v ^File | awk '{printf ("%i", $5) }'`
if [ $p -ge 70 ]
then
df -h $devname | mail -s "$devname is low on space" [email protected]
fi
done
Schlüsseländerungen werden geändert df -k
bis df -Pk
um Zeilenumbrüche zu vermeiden und das awk vereinfacht, um vorberechnete Prozente zu verwenden, anstatt neu zu berechnen.