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文件里的