在服务器上,写一个监控脚本,要求如下:
1.每隔10s去检测一次服务器上的httpd的进程数,如果大于等于500的时候,就需要自动重启一下apache服务,并检测启动
是否成功?
2.若没有正常启动还需再一次启动,最大不成功数超过5次则需要立即发邮件通知管理员,并且以后不需要再检测。
3.如果启动成功后,1分钟后再次检测httpd进程数,若正常则重复之前操作(每隔10S检测一次),若还是大于等于500,那
放弃重启并需发邮件给管理员,然后自动退出该脚本。假设其中发邮件脚本为之前使用的mail.py
#!/bin/bash
checkhttpd(){
RTV=0
c=0
b=`ps -ef | grep httpd | wc -l`
while [ $b -ge 500 ]
do
sleep 10s
if [ $b -ge 500 ]
then
systemctl restart httpd
RTV=$?
elif [ $RTV -eq 0 ]
then
sleep 60s
else
elif [ $RTV -eq 0 && ]
then
continue;
else
echo "mail.py"
fi
done
}
checkhttpd
# break 命令不执行当前循环体内break下面的语句从当前循环退出.
# continue 命令是程序在本循体内忽略下面的语句,从循环头开始执行
查看httpd的进程数
ps -ef | grep httpd | wc -l