Files
jiebanke/backend/restart.sh

107 lines
2.6 KiB
Bash
Raw Normal View History

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