簡単なプロセス、ディスク、ログ監視用のシェルスクリプト

#!/bin/bas
#
################################################################################
# process status monitor config
################################################################################
# process num
ProcNum=2
#
ProcUser[0]=sybase
ProcName[0]=dataserver
#
ProcUser[1]=sybiq
ProcName[1]=iqsrv15
#
#
################################################################################
# filesystem space monitor config
################################################################################
# filesystem space num
FsNum=1
#
# FsName: filesystem name
# MaxPercent: maximum filesystem space used
FsName[0]=/home/roo/
MaxPercent[0]=90
#
#
################################################################################
# program log monitor config
################################################################################
# LogNum:log num
LogNum=1
#
# LogDir: log file directory
# LogName: log file name
# MaxHoldMin: warning if log file doesn’t increase in appointed minutes
LogDir[0]=/home/roo/
LogName[0]=$(date +%Y%m%d).log
MaxHoldMin[0]=10
#
#
################################################################################
# function declaration
################################################################################
# function get process id
function GetPID #User #Name
{
PsUser=$1
PsName=$2
pid=$(ps -u $PsUser|grep $PsName|grep -v grep|grep -v vi|grep -v dbx \
|grep -v tail|grep -v start|grep -v stop |sed -n 1p |awk '{print $1}’)
echo $pid
}
#
# function get filesystem space
function GetDiskSpc #FileSystem
{
if [ $# -ne 1 ]; then
return 1
fi
#
FsDir=$1
DiskSpace=$(df -P $FsDir |tail -1 |awk '{print $5}’ |awk -F% '{print $1}’)
echo $DiskSpace
}
#
#
function GetLogHold #LogPath
{
LogTime=$(ls –full-time $LogPath | awk '{print $6″ “$7}’ | cut -d"." -f1)
SYSTime=$(date +%F" “%T)
echo | \
awk -v T1=LogTime -v T2=SYSTime '{
t1=mktime(T1);
t2=mktime(T2);
dif=(t2-t1)/60;
print dif}’
}
#
################################################################################
# process check
################################################################################
echo
echo “– PROCESS STATUS CHECK BEGIN."
i=0
while [ $i -lt $ProcNum ]
do
echo -n “Check process ${ProcName[$i]}: "
PID=$(GetPID ${ProcUser[$i]} ${ProcName[$i]})
#
if [ “-$PID" == “-" ]; then
echo “Warning: process ${ProcName[$i]} does not exist!"
else
echo “Process ${ProcName[i]} is normal."
fi
#
echo
i=$[ $i + 1 ]
done
#
echo “– PROCESS STATUS CHECK END."
echo
echo
#
################################################################################
# file system spaces check
################################################################################
echo
echo “– FILESYSTEM SPACE CHECK BEGIN."
i=0
while [ $i -lt $FsNum ]
do
echo -n “Check filesystem ${FsName[$i]}: "
DiskSpace=$(GetDiskSpc ${FsName[$i]})
#
if [ $DiskSpace -gt ${MaxPercent[$i]} ]; then
echo “Warning: filesystem (${FsName[$i]}) used $DiskSpace% more than ${MaxPercent[$i]}%!"
else
echo “Filesystem [${FsName[$i]}] used $DiskSpace%."
fi
#
echo
i=$[ $i + 1 ]
done
#
echo “– FILESYSTEM SPACE CHECK END."
echo
echo
#
################################################################################
# program log check
################################################################################
echo
echo “– LOG STATUS CHECK BEGIN."
i=0
while [ $i -lt $LogNum ]
do
echo -n “Check log ${LogDir[i]}${LogName[i]} : "
LogHoldMin=$(GetLogHold ${LogDir[i]}${LogName[i]})
#
if [ $LogHoldMin -gt ${MaxHoldMin[0]} ]; then
echo “Warning: log [${LogDir[i]}${LogName[i]}] hold $LogHoldMin minutes more than ${MaxHoldMin[0]}!"
else
echo “Log [${LogDir[i]}${LogName[i]}] hold $LogHoldMin minutes."
fi
#
echo
i=$[ $i + 1 ]
done
#
echo “– LOG STATUS CHECK END."
echo
echo
#

Source

Posted by arkgame