#!/usr/bin/env bash # 明缘进阶场 FastAPI 停止脚本 (CentOS7, 固定路径) PID_FILE=/home/clock_server/logs/prd/server.pid PORT=8001 kill_pid() { local pid="$1" [ -z "$pid" ] && return 0 echo "停止 PID $pid" kill "$pid" 2>/dev/null || true for _ in $(seq 1 30); do if ! kill -0 "$pid" 2>/dev/null; then break; fi sleep 0.5 done if kill -0 "$pid" 2>/dev/null; then echo "进程未退出,强制结束 PID $pid" kill -9 "$pid" 2>/dev/null || true fi } # 1) 按 PID 文件 if [ -f "$PID_FILE" ]; then PID="$(cat "$PID_FILE" 2>/dev/null || true)" kill_pid "$PID" rm -f "$PID_FILE" fi # 2) 按命令行兜底(uvicorn) for p in $(pgrep -f "uvicorn server_prd.main:app" 2>/dev/null || true); do kill_pid "$p" done # 3) 按端口兜底:杀掉占用 8001 的任何进程 FUSER_BIN="$(command -v fuser || true)" if [ -n "$FUSER_BIN" ]; then echo "检查并释放端口 $PORT" $FUSER_BIN -k "$PORT/tcp" 2>/dev/null || true $FUSER_BIN -k -n tcp "$PORT" 2>/dev/null || true fi sleep 1 echo "完成"