需求:
1.每隔10s监控httpd的进程数,若进程数大于等于500,则自动重启Apache服务,并检测服务是否重启成功;
2.若未成功则需要再次启动,若重启5次依旧没有成功,则向管理员发送告警邮件(使用echo输出已发送即可),并退出检测;
3.如果启动成功,则等待1分钟后再次检测httpd进程数,若进程数正常,则恢复正常检测(10s一次),否则放弃重启并向管理员发送告警邮件,并退出检测。
[root@localhost ~]# vim httpd_check.sh
#!/bin/bash
check_mysql_process_number() {
let process_num=`mysql -uroot -p123456 -e"show processlist;"|wc -l`-2
echo "mysql目前连接数为${process_num}..."
if [ $process_num -gt 50 ];then
systemctl restart mysqld &> /dev/null
systemctl status mysqld &> /dev/null
if [ $? -ne 0 ];then
restart_num=1
while (($restart_num -le 5));do
systemctl restart mysqld &> /dev/null
systemctl status mysqld &> /dev/null
[ $? -eq ] && break
let restart_num++
done
fi
systemctl status mysqld &> /dev/null
[ $? -ne 0 ] && echo "mysql未正常重启,请及时检查!!!" && return 1
let process_num=`mysql -uroot -p123456 -e"show processlist;"|wc -l`-2
echo "重启后连接数为${process_num}..."
if [ $process_num -gt 50 ];then
echo "仍然大于50!!!"
return 1
else
echo "未超过50..."
return 0
fi
else
echo "未超过50..."
sleep 10
return 0
fi
}
while true;do
check_mysql_process_number
[ $? -eq 1 ] && exit
done