#!/bin/bash # JmalCloud 完整前后端停止脚本 set -e # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color BACKEND_PORT=${BACKEND_PORT:-8088} FRONTEND_PORT=${FRONTEND_PORT:-9528} echo -e "${BLUE}🛑 JmalCloud 服务停止脚本${NC}" echo -e "${BLUE}=============================${NC}" # 停止Java后端进程 echo -e "${YELLOW}🔧 停止后端服务...${NC}" java_pids=$(ps aux | grep 'java.*spring-boot:run\|java.*clouddisk' | grep -v grep | awk '{print $2}') if [ ! -z "$java_pids" ]; then echo "发现Java进程: $java_pids" echo $java_pids | xargs kill -15 sleep 3 # 检查是否还有进程存在 remaining_java=$(ps aux | grep 'java.*spring-boot:run\|java.*clouddisk' | grep -v grep | awk '{print $2}') if [ ! -z "$remaining_java" ]; then echo "强制终止Java进程: $remaining_java" echo $remaining_java | xargs kill -9 fi echo -e "${GREEN}✅ 后端服务已停止${NC}" else echo -e "${GREEN}✅ 未发现运行中的后端服务${NC}" fi # 停止Node.js前端进程 echo -e "${YELLOW}🎨 停止前端服务...${NC}" node_pids=$(ps aux | grep 'node.*vue-cli-service\|npm.*dev' | grep -v grep | awk '{print $2}') if [ ! -z "$node_pids" ]; then echo "发现Node.js进程: $node_pids" echo $node_pids | xargs kill -15 sleep 3 # 检查是否还有进程存在 remaining_node=$(ps aux | grep 'node.*vue-cli-service\|npm.*dev' | grep -v grep | awk '{print $2}') if [ ! -z "$remaining_node" ]; then echo "强制终止Node.js进程: $remaining_node" echo $remaining_node | xargs kill -9 fi echo -e "${GREEN}✅ 前端服务已停止${NC}" else echo -e "${GREEN}✅ 未发现运行中的前端服务${NC}" fi # 清理端口占用 echo -e "${YELLOW}🧹 清理端口占用...${NC}" for port in $BACKEND_PORT $FRONTEND_PORT; do pid=$(lsof -ti:$port 2>/dev/null || true) if [ ! -z "$pid" ]; then echo "清理端口 $port 占用进程: $pid" kill -9 $pid 2>/dev/null || true echo -e "${GREEN}✅ 端口 $port 已清理${NC}" fi done # 清理日志文件(可选) echo -e "${YELLOW}🗑️ 清理日志文件...${NC}" if [ -f "backend.log" ]; then > backend.log echo -e "${GREEN}✅ 后端日志已清理${NC}" fi if [ -f "frontend.log" ]; then > frontend.log echo -e "${GREEN}✅ 前端日志已清理${NC}" fi echo -e "${GREEN}🎉 所有服务已停止!${NC}" echo -e "${BLUE}=============================${NC}" echo -e "${GREEN}📋 状态检查:${NC}" # 最终检查 backend_check=$(lsof -ti:$BACKEND_PORT 2>/dev/null || echo "") frontend_check=$(lsof -ti:$FRONTEND_PORT 2>/dev/null || echo "") if [ -z "$backend_check" ]; then echo -e "${GREEN}✅ 后端端口 $BACKEND_PORT 已释放${NC}" else echo -e "${RED}❌ 后端端口 $BACKEND_PORT 仍被占用${NC}" fi if [ -z "$frontend_check" ]; then echo -e "${GREEN}✅ 前端端口 $FRONTEND_PORT 已释放${NC}" else echo -e "${RED}❌ 前端端口 $FRONTEND_PORT 仍被占用${NC}" fi echo "" echo -e "${YELLOW}💡 提示: 如需重新启动,请运行 ./start-full-project.sh${NC}"