原文:http://www.weiruoyu.cn/?p=369

之前一直有这个想法,网上写的都是抄来抄去的,在这里我转发

hrs219

哥们自己写shell脚本,有注释,比较适合初级人员学习,我在这里重新整理了一下格式转发出来

1.监控cpu负载

 
  
  1. #!/bin/bash

  2. IP=`ifconfig eth0 |sed -n '2p'|awk '{print $2}'|cut -f 2 -d ':'`

  3. cpu_num=`grep -c 'model name' /proc/cpuinfo`

  4. load_15=`uptime | awk '{print $NF}'`

  5. average_load=`echo "scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a" | bc`

  6. average_int=`echo $average_load | cut -f 1 -d "."`

  7. load_warn=0.70

  8. if

  9. (($average_int > 0));

  10. then

  11. echo "$IP服务器15分钟的系统平均负载为$average_load,超过警戒值1.0,请立即处理!!!"

  12. else

  13. load_now=`expr $average_load \> $load_warn`

  14. if

  15. (($load_now == 1));

  16. then

  17. echo "$IP服务器15分钟的系统平均负载达到 $average_load,超过警戒值0.70,请及时处理。"

  18. else

  19. echo "ok"

  20. fi

  21. fi

2.监控cpu使用率

 
  
  1. cpu_idle=`top -b -n 1 |grep Cpu |awk '{print $5}'|cut -f1 -d '.'`

  2. if

  3. (($cpu_idle <20));

  4. then

  5. echo `date`"$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理。" |mail -s "cpu over 80%" 7545300@qq.com

  6. fi

测试脚本

 
  
  1. cpu_idle=`top -b -n 1 |grep Cpu |awk '{print $5}'|cut -f1 -d '.'`

  2. if

  3. (($cpu_idle <20));

  4. then

  5. echo `date`"$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理。" |mail -s "cpu over 80%" 54545300@qq.com

  6. else

  7. echo "ok test"

  8. fi

详细参考:http://www.weiruoyu.cn/?p=369