#!/bin/bash # Neural Sync 停止器 - 停止所有服务 PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$PROJECT_DIR" GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' echo "🛑 停止 Neural Sync 服务" echo "====================" # 从 PID 文件读取并停止 if [ -f "logs/backend.pid" ]; then BACKEND_PID=$(cat logs/backend.pid) if ps -p $BACKEND_PID > /dev/null 2>&1; then kill $BACKEND_PID 2>/dev/null echo -e "${GREEN}✅ 后端已停止 (PID: $BACKEND_PID)${NC}" fi rm logs/backend.pid fi if [ -f "logs/frontend.pid" ]; then FRONTEND_PID=$(cat logs/frontend.pid) if ps -p $FRONTEND_PID > /dev/null 2>&1; then kill $FRONTEND_PID 2>/dev/null echo -e "${GREEN}✅ 前端已停止 (PID: $FRONTEND_PID)${NC}" fi rm logs/frontend.pid fi if [ -f "logs/tunnel.pid" ]; then TUNNEL_PID=$(cat logs/tunnel.pid) if ps -p $TUNNEL_PID > /dev/null 2>&1; then kill $TUNNEL_PID 2>/dev/null echo -e "${GREEN}✅ Cloudflare Tunnel 已停止 (PID: $TUNNEL_PID)${NC}" fi rm logs/tunnel.pid else # Fallback: kill by name just in case pkill -f "cloudflared tunnel run" >/dev/null 2>&1 || true fi # 清理端口 (8000 后端, 5173/5174 前端) lsof -ti:8000 2>/dev/null | xargs kill -9 2>/dev/null || true lsof -ti:5173 2>/dev/null | xargs kill -9 2>/dev/null || true lsof -ti:5174 2>/dev/null | xargs kill -9 2>/dev/null || true # 停止 Ollama(可选) read -p "是否同时停止 Ollama? (y/N) " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then pkill -9 -f "ollama serve" 2>/dev/null && echo -e "${GREEN}✅ Ollama 已停止${NC}" || true fi echo -e "${GREEN}🎉 所有服务已停止${NC}"