chore(dev): 按端口杀进程树,避免 Windows 孤儿监听

新增 stop.bat/ps1/sh,并写入本地开发规则:停服务用脚本、停后复核端口。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-16 07:27:45 +08:00
parent 3e135542d3
commit 5052bcd805
7 changed files with 120 additions and 3 deletions

42
stop.sh Normal file
View File

@@ -0,0 +1,42 @@
#!/usr/bin/env bash
set -euo pipefail
# 按端口终止 :3000 / :3001 的监听进程(含子进程)
# 用法:./stop.sh
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$ROOT_DIR"
kill_port() {
local port="$1"
local pids
if command -v lsof &>/dev/null; then
pids="$(lsof -tiTCP:"$port" -sTCP:LISTEN 2>/dev/null || true)"
elif command -v fuser &>/dev/null; then
fuser -k "${port}/tcp" 2>/dev/null || true
echo " :${port} 已尝试 fuser -k"
return
else
echo " 需要 lsof 或 fuser 才能按端口清理"
return 1
fi
if [ -z "${pids}" ]; then
echo " :${port} 空闲"
return
fi
# shellcheck disable=SC2086
echo " :${port} -> PID ${pids}"
kill ${pids} 2>/dev/null || true
sleep 0.3
# shellcheck disable=SC2086
kill -9 ${pids} 2>/dev/null || true
}
echo "══════════════════════════════════════════"
echo " jiang13-bbs Dev Stopper"
echo "══════════════════════════════════════════"
echo "按端口终止 :3000 / :3001 ..."
kill_port 3000
kill_port 3001
echo "完成。停库请另执行: docker compose down"
echo "══════════════════════════════════════════"