У меня вот такой скрипт на:
> uname -a
OSF1 axp30 V5.1 1885 alpha
cat /usr/sbin/fs_check.csh
#!/bin/csh
# find fs which are more than 90% filled
set d = ( `df -k | awk '$5~/%/ && $6!~/proc/ {split($5,a,"%"); if(a[1]>90) print $6"-"$5}'` )
set qq='"'
set pdf = 0
#send message to OVO (hp1) for each overfulled fs.
foreach i ($d)
set fs = `echo $i | cut -d'-' -f1`
set df = `echo $i | cut -d'-' -f2`
# check a flag (don't send identical messages)
if ( -e $fs/.opcmsg_fs ) source $fs/.opcmsg_fs
set ndf = `echo $df | cut -d'%' -f1`
if ($ndf > $pdf) then
echo "set pdf = $ndf" > $fs/.opcmsg_fs
rsh -l axp3031 hp1 "/opt/OV/bin/OpC/opcmsg a=df o=fs msg_grp=OS msg_t=${qq}$fs is $df threshold is 90%${qq} node=axp30 severity=critical"
endif
end
# remove flag for all fs which used less than threshold.
df -k | awk '$5~/%/ && $6!~/proc/ {split($5,a,"%"); if(a[1]<85) print $6"/.opcmsg_fs"}'
c=1048576;
a=`df / | tail -1`;
b=`echo $a | cut -d' ' -f4`;
if [ $b -gt $c ];
then
echo Current space of / is $b | mail -s 'Root is FULL' mail@mail.ru;
fi;
Правильно, по-моему, проверять занятость в процентах,
а не в абсолютных величинах.
А кроме того надо учесть случай вывода в две строки:
$ df /
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
3280165 1348829 1764710 44% /