#!/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 this per eseguire tutte le volte che vuoi un avviso
EDIT:per più dischi
#!/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
Ho provato a usare la risposta di Erik ma ho avuto problemi con i dispositivi con nomi lunghi che racchiudono i numeri e fanno fallire lo script, anche la matematica mi sembrava sbagliata e non corrispondeva alle percentuali riportate da df
stesso.
Ecco un aggiornamento al suo script:
#!/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
Le modifiche chiave sono cambiate df -k
a df -Pk
per evitare il ritorno a capo e semplificato l'awk per utilizzare la percentuale pre-calcolata invece del ricalcolo.