LINUX.ORG.RU

У меня вот такой скрипт на:
> 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"}'

sdio ★★★★★
()
Ответ на: комментарий от anonymous

Строку с "rsh -l ..."
замени на echo "OMG disk is full ..." | mail -s "disk usage" administrator@windoze.com

sdio ★★★★★
()

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;

Neksys ★★★
()
Ответ на: комментарий от hatefu1_dead

Правильно, по-моему, проверять занятость в процентах, 
а не в абсолютных величинах.
А кроме того надо учесть случай вывода в две строки:
$ df /
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      3280165  1348829  1764710  44% /

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.