#!/bin/bash # 结伴客后端服务重启脚本 # 设置颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # 停止服务 stop_server() { echo -e "${BLUE}正在停止结伴客后端服务...${NC}" # 查找并停止结伴客后端服务进程 PIDS=$(ps aux | grep "node src/server.js" | grep -v grep | awk '{print $2}') if [ -z "$PIDS" ]; then echo -e "${YELLOW}未找到正在运行的结伴客后端服务进程${NC}" return 0 fi echo -e "${BLUE}找到以下结伴客后端服务进程: $PIDS${NC}" for PID in $PIDS; do echo -e "${BLUE}正在停止进程 $PID...${NC}" kill $PID # 等待进程结束 COUNT=0 while kill -0 $PID 2>/dev/null; do sleep 1 COUNT=$((COUNT + 1)) if [ $COUNT -gt 10 ]; then echo -e "${YELLOW}进程 $PID 未能正常停止,正在强制终止...${NC}" kill -9 $PID break fi done echo -e "${GREEN}进程 $PID 已停止${NC}" done echo -e "${GREEN}结伴客后端服务已停止${NC}" } # 启动服务 start_server() { echo -e "${BLUE}正在启动结伴客后端服务...${NC}" # 检查是否提供了参数 if [ "$1" = "dev" ]; then # 开发模式 if command -v nodemon &> /dev/null; then nodemon src/server.js else echo -e "${YELLOW}未安装 nodemon,使用 node 运行...${NC}" node src/server.js fi else # 生产模式 node src/server.js fi } # 重启服务 restart_server() { stop_server sleep 2 start_server "$1" } # 显示帮助信息 show_help() { echo "结伴客后端服务重启脚本" echo "" echo "使用方法:" echo " ./restart.sh - 重启服务(生产模式)" echo " ./restart.sh dev - 重启服务(开发模式)" echo " ./restart.sh help - 显示帮助信息" echo "" echo "说明:" echo " 生产模式: 使用 node 直接运行服务" echo " 开发模式: 使用 nodemon 运行服务(支持热重载)" } # 主逻辑 main() { echo -e "${GREEN}========== 结伴客后端服务重启脚本 ==========${NC}" # 检查参数 case "$1" in "help"|"-h"|"--help") show_help ;; "dev") restart_server "dev" ;; *) restart_server ;; esac } # 执行主逻辑 main "$@"