New file |
| | |
| | | #!/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 |