#!/usr/bin/env bash URL=$1 TIMEOUT=60 # 60秒超时 COUNT=0 echo "[$(date '+%Y-%m-%d %H:%M:%S')] 开始等待 Redis 服务启动" echo "[$(date '+%Y-%m-%d %H:%M:%S')] Redis URL: ${URL}" while [ $COUNT -lt $TIMEOUT ] do # 尝试连接 Redis 并捕获输出 REDIS_OUTPUT=$(redis-cli -u $URL PING 2>&1) REDIS_STATUS=$? echo "[$(date '+%Y-%m-%d %H:%M:%S')] 尝试连接 Redis (${COUNT}/${TIMEOUT})" echo "[$(date '+%Y-%m-%d %H:%M:%S')] Redis 响应: ${REDIS_OUTPUT}" if [ $REDIS_STATUS -eq 0 ] && echo "$REDIS_OUTPUT" | grep -q PONG; then echo "[$(date '+%Y-%m-%d %H:%M:%S')] Redis 服务已就绪" echo "[$(date '+%Y-%m-%d %H:%M:%S')] Redis 连接成功,退出等待" exit 0 else echo "[$(date '+%Y-%m-%d %H:%M:%S')] Redis 连接失败,状态码: ${REDIS_STATUS}" fi COUNT=$((COUNT + 1)) if [ $COUNT -eq $TIMEOUT ]; then echo "[$(date '+%Y-%m-%d %H:%M:%S')] 错误: Redis 服务在 ${TIMEOUT} 秒内未就绪" echo "[$(date '+%Y-%m-%d %H:%M:%S')] 最后一次尝试结果: ${REDIS_OUTPUT}" echo "[$(date '+%Y-%m-%d %H:%M:%S')] 退出等待" exit 1 fi echo "[$(date '+%Y-%m-%d %H:%M:%S')] 等待 1 秒后重试..." sleep 1 done echo "[$(date '+%Y-%m-%d %H:%M:%S')] 脚本异常退出" exit 1