更新 scripts/start.sh
This commit is contained in:
@@ -7,58 +7,17 @@ WORKSPACE_PATH="/workspace"
|
|||||||
cd $WORKSPACE_PATH
|
cd $WORKSPACE_PATH
|
||||||
|
|
||||||
kill_port_if_listening() {
|
kill_port_if_listening() {
|
||||||
local port="$PORT"
|
local pids
|
||||||
local hex_port
|
pids=$(ss -H -lntp 2>/dev/null | awk -v port="${PORT}" '$4 ~ ":"port"$"' | grep -o 'pid=[0-9]*' | cut -d= -f2 | paste -sd' ' - || true)
|
||||||
local inodes=""
|
if [[ -z "${pids}" ]]; then
|
||||||
local pids=""
|
return
|
||||||
|
|
||||||
# 转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
|
|
||||||
fi
|
fi
|
||||||
|
echo "${pids}" | xargs -I {} kill -9 {}
|
||||||
# 通过 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
|
|
||||||
sleep 1
|
sleep 1
|
||||||
|
pids=$(ss -H -lntp 2>/dev/null | awk -v port="${PORT}" '$4 ~ ":"port"$"' | grep -o 'pid=[0-9]*' | cut -d= -f2 | paste -sd' ' - || true)
|
||||||
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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
kill_port_if_listening
|
kill_port_if_listening
|
||||||
|
|
||||||
echo "Starting HTTP service on port ${PORT} for dev..."
|
echo "Starting HTTP service on port ${PORT} for dev..."
|
||||||
|
|
||||||
pnpm dev -- --host 0.0.0.0 --port $PORT
|
pnpm dev -- --host 0.0.0.0 --port $PORT
|
||||||
|
|||||||
Reference in New Issue
Block a user