低配服务器,小水管网站经常会出现各种各样的问题,如Nginx、mysql突然不明原因暂停,因此我找了一些代码,用于宝塔自动检测PHP、redis、MySQL、Nginx状态,并自动重启各项服务。
PHP监控(PHP56举例)
#!/bin/bash# Linux监控PHP服务,关闭就自动重启 pgrep -x php-fpm &> /dev/nullif [ $? -ne 0 ];then/etc/init.d/php-fpm-56 restart echo "监控到php56已停止,已执行重启计划,时间: `date "+%Y-%m-%d %H:%M:%S"` " >> /www/php_jiankong.log fi
redis监控
#!/bin/bash# Linux监控redis服务,关闭就自动重启 pgrep -x redis &> /dev/nullif [ $? -ne 0 ];then/etc/init.d/redis start fi
MySQL监控
#!/bin/bash# Linux监控MySQL服务,关闭就自动重启 pgrep -x mysqld &> /dev/nullif [ $? -ne 0 ];then bash /www/server/panel/script/rememory.sh /etc/init.d/mysqld start echo "监控到MySQL已停止,已执行重启计划,时间: `date "+%Y-%m-%d %H:%M:%S"` " >> /www/mysql_jiankong.log fi
Nginx监控
#!/bin/bash# Linux监控Nginx服务,关闭就自动重启 nginx_procnum=`ps -ef|grep "nginx"|grep -v grep|wc -l` if [ $nginx_procnum -eq 0 ]then echo $(date) "Success,Nginx重启成功!" >> /var/log/nginxmonitor.log /etc/init.d/nginx startelse sleep 5 echo "Nginx正常运行中..."fi
1、代码添加方法
宝塔面板——计划任务——Shell脚本,时间以半个小时以上为宜,避免增加服务器负担。
综合脚本代码如下:
#!/bin/bash
# 监控并自动重启 Nginx、PHP-fpm、MySQL、Redis 和 Memcachedhttps://www.xcbtmw.com/18654.html
# 日志文件路径
LOG_FILE="/www/xcbtmw_services_jiankong.log"
# 监测并重启,注意php版本号
restart_service() {
local service=$1
local init_script=$2
pgrep -x $service &> /dev/null
if [ $? -ne 0 ]; then
if [ -f $init_script ]; then
$init_script start
echo "监控到$service已停止,已执行重启计划,时间: $(date '+%Y-%m-%d %H:%M:%S')" >> $LOG_FILE
else
echo "错误:尝试启动$service失败,因为启动脚本$init_script不存在。" >> $LOG_FILE
fi
fi
}
# 检查并重启 Nginx
restart_service "nginx" "/etc/init.d/nginx"
# 检查并重启 PHP(注意版本号)
restart_service "php-fpm" "/etc/init.d/php-fpm-81"
# 检查并重启 MySQL
restart_service "mysqld" "/etc/init.d/mysqld"
# 特殊处理 MySQL 需要执行的额外脚本
pgrep -x mysqld &> /dev/null
if [ $? -ne 0 ]; then
bash /www/server/panel/script/rememory.sh
fi
# 检查并重启 Redis
restart_service "redis" "/etc/init.d/redis"
# 检查并重启 Memcached
restart_service "memcached" "/etc/init.d/memcached"
下面是单独的代码,如果你并不需要全部监测的话
2.Nginx自动重启脚本
检测并自动重启
自动重启
3.PHP自动重启脚本
检测并自动重启
4.Mysql自动重启脚本
检测并自动重启
5.Redis和memcached
Redis检测并自动重启