#!/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 to spustí, jak často chcete upozornění
EDIT:Pro více disků
#!/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
Pokusil jsem se použít Erikovu odpověď, ale měl jsem problémy se zařízeními s dlouhými názvy, které zalamovaly čísla a způsobovaly selhání skriptu, také matematika se mi zdála špatná a neodpovídala procentům hlášeným df
sám.
Zde je aktualizace jeho skriptu:
#!/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
Změny klíče jsou změněny df -k
do df -Pk
abychom se vyhnuli zalamování řádků a zjednodušili awk tak, aby místo přepočítávání používala předem vypočítaná procenta.