- #!/bin/bash
- echo 1 > /proc/sys/vm/block_dump
- dmesg >/dev/null 2&>1
- par=$2
- pars=$[$2+10]
- if [ ! -z $par ];then
- array=(`df -la |grep ^/dev| grep -vE "proc|sys|pts|shm|boot|rpc" |awk '{print $1}'`)
- len=${#array[@]}
- max=0
- for((i=1;i<=$len;i=i+2));do
- echoa=${array[$i-1]}
- aa="$(iostat -x 1 1 "$echoa" | sed 1,6d | awk -F " " '{print $1 "\t" $NF}' | sort -nr -k2 | head -1 | awk '{print $2}'|cut -f 1 -d .)"
- ab="$(iostat -x 1 1 "$echoa" | sed 1,6d | awk -F " " '{print $1 "\t" $NF}' | sort -nr -k2 | head -1 | awk '{print $1}'|cut -f 1 -d .)"
- if [ $aa -ge $max ];then
- max=$aa
- sss=$ab
- fi
- done
- else
- echo "you need input $ARG"
- exit 3
- fi
- gepars (){
- array3=`dmesg |awk -F: '{print $1}'|sort|uniq -c|sort -rn|head -n 1|awk '{print $2}'|awk -F "(" '{print $1}'`
- a=`ps -ef | grep $array3 |grep -v grep|awk '{print $2}'`
- if [ ! -z $a ];then
- echo CRITICAL:the parition $sss,using $max%,CRITICAL is $pars%,warning is $par%,PID is $a,program is $a,program is $array3
- else
- echo CRITICAL:Now $sss, $max%,CRITICAL:$pars%,WARNING:$par%,program is $array3
- fi
- }
- gepar () {
- array3=`dmesg |awk -F: '{print $1}'|sort|uniq -c|sort -rn|head -n 1|awk '{print $2}'|awk -F "(" '{print $1}'`
- a=`ps -ef | grep $array3 |grep -v grep|awk '{print $2}'`
- if [ ! -z $a ];then
- echo warning:the parition $sss using $max% ,warning is $par%,CRITICAL:$pars%,PID is $a,program is $array3
- else
- echo warning:Now $sss, $max%,CRITICAL:$pars%,WARNING:$par%,program is $array3
- fi
- }
- if [ "$max" -ge "$pars" ];then
- gepars
- echo 0 > /proc/sys/vm/block_dump
- exit 2
- elif [ "$max" -ge "$par" ]; then
- gepar
- echo 0 > /proc/sys/vm/block_dump
- exit 1
- else
- echo ok,Now "$sss", "$max"%,CRITICAL:"$pars"%,WARNING:"$par"%
- exit 0
- fi
执行用: sh a.sh 2 可以放到nagios 里面使用