#!/bin/bash # # 检查本地端口是否在指定超时时间内变为可用 # 用法: ./check_port.sh [timeout] # 例如: ./check_port.sh 8000 60 # PORT=${1:-8000} TIMEOUT=${2:-60} INTERVAL=5 START_TIME=$(date +%s) END_TIME=$((START_TIME + TIMEOUT)) echo "开始检测: 端口 $PORT,超时时间 ${TIMEOUT}s,每次间隔 ${INTERVAL}s" while [ $(date +%s) -lt $END_TIME ]; do if nc -z -w1 localhost "$PORT" 2>/dev/null; then echo "[$(date '+%F %T')] ✅ 端口 $PORT 已启用" exit 0 else echo "[$(date '+%F %T')] ⏳ 端口 $PORT 尚为启动用,等待 ${INTERVAL}s..." sleep $INTERVAL fi done echo "[$(date '+%F %T')] ❌ 超时: 端口 $PORT 在 ${TIMEOUT}s 内未变为启用" exit 1