Linux 系统在宝塔设置定时计划任务 定时检测 MySQL 服务状态

半小时检测一次,如果数据库停止了,那么启动。让Deepseek给写的脚本,但是一直不生效,因为起初它用 is-active 去判断MySQL 服务的状态。

后来改为用ps aux | grep -v grep | grep -q "mysqld";

完整代码如下:

#!/bin/bash

# 检测真实MySQL进程
if ps aux | grep -v grep | grep -q "mysqld"; then
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] ✅ MySQL进程正在运行"
else
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] ❌ MySQL进程未运行,尝试启动..."
    
    # 使用SysV启动脚本并显示完整输出
    echo "正在执行启动命令: /etc/rc.d/init.d/mysqld start"
    /etc/rc.d/init.d/mysqld start  # 直接输出到控制台
    sleep 5
    
    # 再次检测进程
    if ps aux | grep -v grep | grep -q "mysqld"; then
        echo "[$(date '+%Y-%m-%d %H:%M:%S')] 🚀 MySQL启动成功"
    else
        echo "[$(date '+%Y-%m-%d %H:%M:%S')] ‼️ MySQL启动失败!需人工介入!"
    fi
fi

echo "---------------------------"
echo "监控检查完成!"
echo "---------------------------"
ShellScript

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注