#!/bin/bash
|
|
# 定义变量
|
VENV_PATH="./venv" # 虚拟环境路径
|
APP_NAME="main:app"
|
HOST="0.0.0.0"
|
PORT="9201"
|
UVICORN_CMD="uvicorn $APP_NAME --host $HOST --port $PORT"
|
|
# 激活虚拟环境
|
source $VENV_PATH/bin/activate
|
|
# 停止现有进程
|
echo "Stopping existing processes..."
|
PIDS=$(pgrep -f "$UVICORN_CMD")
|
|
if [ -z "$PIDS" ]; then
|
echo "No running processes found."
|
else
|
for PID in $PIDS; do
|
echo "Terminating process $PID..."
|
kill -15 $PID
|
sleep 1 # 等待1秒,确保进程有时间优雅关闭
|
if kill -0 $PID > /dev/null 2>&1; then
|
echo "Process $PID is still running, sending SIGKILL..."
|
kill -9 $PID
|
fi
|
done
|
fi
|
|
# 启动新进程
|
echo "Starting new process..."
|
$UVICORN_CMD > server.log 2>&1 &
|
NEW_PID=$!
|
echo "New process started with PID $NEW_PID."
|
|
# 可选:检查新进程是否成功启动
|
sleep 2 # 等待2秒,确保新进程有足够的时间启动
|
if kill -0 $NEW_PID > /dev/null 2>&1; then
|
echo "New process with PID $NEW_PID is running."
|
else
|
echo "Failed to start the new process."
|
fi
|