检查Redis服务状态的Shell脚本

最近,线上服务总是不定时抽风,Redis服务突然挂掉。受够了每次都要手动重启服务。于是,我用AI写了这个脚本来解放自己的双手。

脚本功能

这个小脚本能帮我:

  • 自动检查Redis是否在运行
  • 如果服务挂了,立即重启
  • 记录服务状态变化

完整脚本代码

#!/bin/bash
# 自动检查并启动Redis服务的Shell脚本
# 定义redis-cli的路径
REDISCLI=$(command -v redis-cli)
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
# 定义启动Redis服务的命令
REDIS_SERVICE_CMD="sudo systemctl"
# 检查Redis是否运行
function check_redis_running {
    if [[ -x "$REDISCLI" ]]; then # 检查redis-cli是否存在并且可执行
        if timeout 1 $REDISCLI -h $REDIS_HOST -p $REDIS_PORT ping > /dev/null 2>&1; then
            echo "$(date): Redis 正在运行。"
        else
            echo "$(date): Redis 未运行。尝试启动..."
            start_redis_service
        fi
    else
        echo "$(date): 未找到redis-cli或不可执行。"
    fi
}
# 启动Redis服务
function start_redis_service {
    if $REDIS_SERVICE_CMD status redis.service > /dev/null 2>&1; then
        echo "$(date): Redis 服务已存在,尝试重启..."
        $REDIS_SERVICE_CMD restart redis.service
    else
        echo "$(date): Redis 服务不存在,尝试启动..."
        $REDIS_SERVICE_CMD start redis.service
    fi
    # 检查启动是否成功
    if $REDISCLI -h $REDIS_HOST -p $REDIS_PORT ping > /dev/null 2>&1; then
        echo "$(date): Redis 启动成功。"
    else
        echo "$(date): 启动Redis失败。"
    fi
}
# 主函数
function main {
    check_redis_running
}
# 脚本入口
main

使用方法

  1. 把脚本保存为 check_redis.sh
  2. 给脚本加执行权限:chmod +x check_redis.sh
  3. 可以把它加到 crontab 定时跑
最后修改:2025 年 04 月 25 日
如果觉得我的文章对你有用,请随意赞赏