检查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
使用方法
- 把脚本保存为
check_redis.sh
- 给脚本加执行权限:
chmod +x check_redis.sh
- 可以把它加到 crontab 定时跑