使用shell脚本监控httpd进程

该bash脚本用于每10秒检查httpd进程数,当进程数超过500时自动重启Apache服务,并确保服务重启成功。如果5次重启失败,将发送告警邮件给管理员。同时,它也会监控MySQL的连接数,防止资源过度消耗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值