Files
front_template/scripts/start.sh
2026-03-25 11:04:49 +08:00

64 lines
1.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
set -Eeuo pipefail
PORT=5173
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
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
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
}
kill_port_if_listening
echo "Starting HTTP service on port ${PORT} for dev..."
pnpm dev -- --host 0.0.0.0 --port $PORT