当前位置: > Linux服务器 > apache >

自动监控apache运行状态并重启

时间:2016-07-14 14:15来源:linux.it.net.cn 作者:IT

一:

#!/bin/bash
service httpd status|grep “run”>/dev/null     #查看apache服务的状态并不显示
if [ $? -eq 0 ];then               #如果上面命令执行成功的话
echo httpd is running.              #显示“httpd is running. ”
else                      #否则
echo httpd is down,and starting….       #显示“httpd is down,and starting…. ”
service httpd start>/dev/null 2> /dev/null    #启动apache服务并不显示信息
sleep 5s                   #停留5s
echo httpd is running.            #显示“httpd is running. ”
fi

 

####################################################################

二:最佳方法

根据系统负载值自动重启Web服务,如果发现apache是停止的也会自动启动

下面的脚本,以装有Apache服务器的VPS为例,定时判断系统负载值,当达到5时,认为系统已经超负荷运转,这时,脚本会自动重启Apache服务,释放系统资源,以达到让VPS服务器平稳运行的目的。

*注:脚本来自网络,非原创,出处不明,本人做了少许改动。

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

TOP_SYS_LOAD_NUM=5
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

脚本中TOP_SYS_LOAD_NUM表示最大允许的系统平均负载值,当超过这一值的时候,脚本就开始重启apache服务。脚本的使用也挺简便,直接到/etc/cron.d/ 建立一个定时执行文件,填入如下内容即可:

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

这里*/2,表示每两分钟执行一次指定的脚本,并将执行结果输出到/root/checkload.log文件中。

你也可以根据自己的需要,来修改执行频率。

小结

此脚本已经部署到我的VPS上一段时间,从使用的情况来看,效果还比较不错。

####################################################################



(责任编辑:IT)
------分隔线----------------------------