Ubuntu监控load脚本:
# vi load.sh
按a或i进入编辑模式
#!/bin/bash
Name=`hostname`
IP=`/sbin/ifconfig eth0 | grep "inet addr" | awk -F[:" "]+ '{print $4}'`
Date=`date +%m%d%y`
Load=`/usr/bin/uptime | grep load | awk -F[:" "]+ '{print $14}' | tr -d ","`
Load2=150
if [ $(echo "$Load > $Load2" | bc) -eq 1 ]
then
/usr/bin/touch /log/Load/$Date.log
/usr/bin/top -b -d 1 -n 3 | /usr/bin/head -15 > /log/Load/$Date.log
/usr/bin/mail -s "$Name($IP) Load is $Load" zhiming.yang@spreadtrum.com < /log/Load/$Date.log
fi
按Esc键退出编辑模式
:wq (保存并退出)
难点说明:
1、浮点数比较大小方法:$(echo "$Load > $Load2" | bc) -eq 1 ,1代表真(即大于),0代表假(即不大于)
2、当Load值(取的第1个值,后2个表示5分钟和10分钟内的load)大于150时发邮件通知并截取top的前15行
3、在crontab中执行top命令需要参数(-b -d 1 -n 3,每1秒执行,执行3次),否则不会有信息到log文件里的
本文转自linux博客51CTO博客,原文链接http://blog.51cto.com/yangzhiming/1554437如需转载请自行联系原作者
yangzhimingg