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

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

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

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

相关文章

Centos系统之Shell编程基础知识
从Export理解Shell环境和变量生存期
linux shell数组变量、类型及规则
Centos编程Shell基本工作原理方案
Centos操作系统编程之Shell 问答录
rsync-linux备份脚本