#!/usr/bin/env bash # # 停止由 scripts/start.sh 启动的本地开发服务。 # set -uo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" RUN_DIR="${PROJECT_DIR}/.run" GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m' stop_pid_file() { local file="$1" label="$2" [ -f "$file" ] || return 0 local pid pid="$(cat "$file")" if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then # 连同子进程一起结束(npm / uvicorn --reload 会派生子进程) pkill -TERM -P "$pid" 2>/dev/null || true kill -TERM "$pid" 2>/dev/null || true echo -e "${GREEN}✓${NC} 已停止 ${label} (pid ${pid})" else echo -e "${YELLOW}!${NC} ${label} 未在运行" fi rm -f "$file" } stop_pid_file "${RUN_DIR}/backend.pid" "后端服务" stop_pid_file "${RUN_DIR}/frontend.pid" "前端服务" # 兜底:清理没有 pid 文件却仍在监听的 vite(只匹配本项目路径,不会误伤其它项目) pkill -f "${PROJECT_DIR}/frontend/node_modules" 2>/dev/null \ && echo -e "${YELLOW}!${NC} 清理了残留的前端进程" || true echo "完成。"