自动监控linux服务器负载并重启Web服务的脚本

[shell]
#!/bin/sh
#usage: */2 * * * * root /root/checkload.sh >>/root/checkload.log

TOP_SYS_LOAD_NUM=3
SYS_LOAD_NUM=`uptime | awk '{print $(NF-2)}' | sed 's/,//'`

echo $(date  "%y-%m-%d") `uptime`
if [ `echo "$TOP_SYS_LOAD_NUM < $SYS_LOAD_NUM"|bc` -eq 1 ]
then
echo "AutoStart:" $(date  "%y-%m-%d %H:%M:%S") "pkill httpd" `ps -ef | grep httpd | wc -l`
pkill httpd
sleep 10
for i in 1 2 3
do
if [ `pgrep httpd | wc -l` -le 0 ]
then
service httpd start
sleep 15
echo "AutoStart:" $(date  "%y-%m-%d %H:%M:%S") "start httpd" `ps -ef | grep httpd | wc -l`
fi
done
else
if [ `pgrep httpd | wc -l` -le 0 ]
then
service httpd start
sleep 15
echo "AutoStart:" $(date  "%y-%m-%d %H:%M:%S") "start httpd" `ps -ef | grep httpd | wc -l`
fi
fi
[/shell]

脚本中TOP_SYS_LOAD_NUM表示最大允许的系统平均负载值,当超过这一值的时候,脚本就开始重启apache服务。

Linux系统中,通过很多命令都可以查看当前的系统平均负载值,比如:w,top或者uptime命令,命令输出的内容表示在过去的1、5、15分钟的系统负载情况。

脚本的使用也挺简便,直接到/etc/cron.d/ 建立一个定时执行文件,填入如下内容即可:

*/2 * * * * root /root/checkload.sh >>/root/checkload.log

这里*/2,表示每两分钟执行一次指定的脚本,并将执行结果输出到/root/checkload.log文件中。 你也可以根据自己的需要,来修改执行检查的时间。



转载于:https://my.oschina.net/liufeng815/blog/353559

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值