1. #!/bin/bash  
  2.  
  3.  
  4. echo 1 > /proc/sys/vm/block_dump  
  5. dmesg >/dev/null 2&>1  
  6.  
  7. par=$2  
  8. pars=$[$2+10]  
  9. if [ ! -z $par ];then 
  10. array=(`df -la |grep ^/dev| grep -vE "proc|sys|pts|shm|boot|rpc" |awk '{print $1}'`)  
  11. len=${#array[@]}  
  12. max=0  
  13. for((i=1;i<=$len;i=i+2));do  
  14.  
  15.           echoa=${array[$i-1]}  
  16.  
  17.           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 .)" 
  18.           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 .)" 
  19. if [ $aa -ge $max ];then 
  20. max=$aa  
  21. sss=$ab  
  22. fi  
  23. done  
  24. else 
  25.  
  26. echo "you need input $ARG" 
  27. exit 3  
  28.  
  29. fi  
  30.  
  31. gepars (){  
  32.  
  33. array3=`dmesg |awk -F: '{print $1}'|sort|uniq -c|sort -rn|head -n 1|awk '{print $2}'|awk -F "(" '{print $1}'`  
  34. a=`ps -ef | grep $array3 |grep -v grep|awk '{print $2}'`  
  35. if [ ! -z $a ];then 
  36.                 echo CRITICAL:the parition $sss,using $max%,CRITICAL is $pars%,warning is $par%,PID is $a,program is $a,program is $array3  
  37. else 
  38. echo  CRITICAL:Now $sss, $max%,CRITICAL:$pars%,WARNING:$par%,program is $array3  
  39. fi  
  40. }  
  41.  
  42. gepar () {  
  43. array3=`dmesg |awk -F: '{print $1}'|sort|uniq -c|sort -rn|head -n 1|awk '{print $2}'|awk -F "(" '{print $1}'`  
  44. a=`ps -ef | grep $array3 |grep -v grep|awk '{print $2}'`  
  45. if [ ! -z $a ];then 
  46.  
  47.                 echo warning:the parition $sss using $max% ,warning is $par%,CRITICAL:$pars%,PID is $a,program is $array3  
  48.  
  49. else 
  50.  
  51. echo  warning:Now $sss, $max%,CRITICAL:$pars%,WARNING:$par%,program is $array3  
  52. fi  
  53. }  
  54.  
  55. if [ "$max" -ge "$pars" ];then 
  56. gepars  
  57. echo 0 > /proc/sys/vm/block_dump  
  58. exit 2  
  59.  
  60. elif [ "$max" -ge "$par" ]; then 
  61.     gepar  
  62. echo 0 > /proc/sys/vm/block_dump  
  63. exit 1  
  64. else 
  65. echo  ok,Now "$sss""$max"%,CRITICAL:"$pars"%,WARNING:"$par"%  
  66. exit 0  
  67. fi 

 

执行用: sh a.sh 2 可以放到nagios 里面使用