Bash脚本实现网站服务进程守护检测-建站综合交流社区-WordPress-WordPress主题模板-zibll子比主题

Bash脚本实现网站服务进程守护检测

实践:

图片[1]-Bash脚本实现网站服务进程守护检测-建站综合交流社区-WordPress-WordPress主题模板-zibll子比主题

 

脚本:

使用方法:宝塔面板添加计划任务,设置1分钟/5分钟/10分钟执行一次

脚本特点:可以检测MySQL,Redis,PHP,Nginx等常用业务的运行状态,停止后可自动启动

脚本目前缺点:无法判定MySQL正确的运行状态,如果网站程序因此脚本出现数据库异常,建议注释MySQL相关片段(已经使用宝塔自带的检测程序

#!/bin/bash

# 函数:检查服务状态并尝试启动
check_service() {
    local service=$1
    local start_cmd=$2
    local status_cmd=$3
    local status_line

    # 检测服务状态
    status_line=$($status_cmd)
    if echo "$status_line" | grep -q "not running"; then
        echo "$service服务未运行,正在尝试启动..."
        $start_cmd
        # 再次检测服务状态
        status_line=$($status_cmd)
        if echo "$status_line" | grep -Eq "is running|already running.|SUCCESS!"; then
            echo "$service服务已成功启动。"
        else
            echo "$service服务启动失败。"
        fi
    elif echo "$status_line" | grep -Eq "is running|already running."; then
        echo "$service服务正在运行。"
    else
        echo "$service服务未运行,正在尝试启动..."
        $start_cmd
        # 再次检测服务状态
        status_line=$($status_cmd)
        if echo "$status_line" | grep -Eq "is running|already running."; then
            echo "$service服务已成功启动。"
        else
            echo "$service服务启动失败。"
        fi
    fi
}

# 检测并启动PHP服务
check_service "PHP" "/etc/init.d/php-fpm-72 start" "/etc/init.d/php-fpm-72 status"

# 检测并启动Nginx服务
check_service "Nginx" "/etc/init.d/nginx start" "/etc/init.d/nginx status"

# 检测并启动MySQL服务
#check_service "MySQL" "/etc/init.d/mysqld start" "/etc/init.d/mysqld status"
btpython /www/server/panel/script/restart_database.py

# 检测并启动Redis服务
check_service "Redis" "/etc/init.d/redis start" "/etc/init.d/redis status"

如果需要添加其他进程守护检测,可在原脚本下添加新代码:

check_service "服务名称" "/etc/init.d/程序名 启动命令" "程序名 运行状态"
例如:
check_service "Redis" "/etc/init.d/redis start" "/etc/init.d/redis status"
请登录后发表评论

    没有回复内容