#!/bin/bash # 重启后端服务脚本 cd "$(dirname "$0")" # 查找运行中的uvicorn进程 (优先使用 lsof 查找端口占用) PID=$(lsof -t -i:8001) if [ -z "$PID" ]; then # 回退到 ps 查找 (如果 lsof 没找到或不可用) PID=$(ps aux | grep "uvicorn api.main:app" | grep -v grep | awk '{print $2}') fi if [ -z "$PID" ]; then echo "未找到运行中的后端服务" echo "启动新服务..." ./start.sh else echo "找到运行中的后端服务,PID: $PID" echo "正在停止服务..." kill $PID sleep 2 # 检查是否成功停止 (使用 kill -0 检查进程是否存在,替代 ps -p) if kill -0 $PID > /dev/null 2>&1; then echo "强制停止服务..." kill -9 $PID sleep 1 fi echo "服务已停止,正在启动新服务..." ./start.sh fi