From 2403ac58fe3492b5fb9cb0541c37f0cfd684d906 Mon Sep 17 00:00:00 2001 From: admin Date: Wed, 25 Mar 2026 16:49:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20scripts/start.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/start.sh | 55 ++++++------------------------------------------ 1 file changed, 7 insertions(+), 48 deletions(-) diff --git a/scripts/start.sh b/scripts/start.sh index dc1b944..bb546f7 100755 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -7,58 +7,17 @@ WORKSPACE_PATH="/workspace" cd $WORKSPACE_PATH kill_port_if_listening() { - local port="$PORT" - local hex_port - local inodes="" - local pids="" - - # 转16进制端口(大端) - hex_port=$(printf '%04X\n' "$port") - - # 找 TCP (IPv4) - inodes+=$(awk -v port=":$hex_port" '$2 ~ port && $4 == "0A" {print $10}' /proc/net/tcp 2>/dev/null || true) - - # 找 TCP (IPv6) - inodes+=" " - inodes+=$(awk -v port=":$hex_port" '$2 ~ port && $4 == "0A" {print $10}' /proc/net/tcp6 2>/dev/null || true) - - inodes=$(echo "$inodes" | tr ' ' '\n' | sort -u | tr '\n' ' ') - - if [[ -z "$inodes" ]]; then - return 0 + local pids + pids=$(ss -H -lntp 2>/dev/null | awk -v port="${PORT}" '$4 ~ ":"port"$"' | grep -o 'pid=[0-9]*' | cut -d= -f2 | paste -sd' ' - || true) + if [[ -z "${pids}" ]]; then + return fi - - # 通过 inode 找 PID - for inode in $inodes; do - for pid in $(ls /proc | grep -E '^[0-9]+$'); do - if ls -l /proc/$pid/fd 2>/dev/null | grep -q "socket:\[$inode\]"; then - pids="$pids $pid" - fi - done - done - - # 去重 - pids=$(echo "$pids" | tr ' ' '\n' | sort -u | tr '\n' ' ') - pids="${pids#" "}" - - if [[ -z "$pids" ]]; then - echo "Port ${port} has socket but no PID found." - return 1 - fi - - kill -9 $pids 2>/dev/null || true + echo "${pids}" | xargs -I {} kill -9 {} sleep 1 - - local check - check=$(awk -v port=":$hex_port" '$2 ~ port && $4 == "0A"' /proc/net/tcp /proc/net/tcp6 2>/dev/null || true) - - if [[ -n "$check" ]]; then - echo "Warning: port ${port} still busy after SIGKILL" - fi + pids=$(ss -H -lntp 2>/dev/null | awk -v port="${PORT}" '$4 ~ ":"port"$"' | grep -o 'pid=[0-9]*' | cut -d= -f2 | paste -sd' ' - || true) } kill_port_if_listening - echo "Starting HTTP service on port ${PORT} for dev..." -pnpm dev -- --host 0.0.0.0 --port $PORT \ No newline at end of file +pnpm dev -- --host 0.0.0.0 --port $PORT