简单的进程、磁盘、日志监测shell脚本

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

#!/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
#