#!/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 "══════════════════════════════════════════"