#!/bin/bash # ============================================================ # start_flask.sh - 仅启动/重启 Flask 服务(不启动 ROS2) # 适用于: 修改了前端/API 代码后快速重启 # ============================================================ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" AGV_PROJECT_DIR="${AGV_PROJECT_DIR:-$PROJECT_DIR}" AGV_APP_DIR="${AGV_APP_DIR:-$AGV_PROJECT_DIR/agv_app}" AGV_ROS2_DIR="${AGV_ROS2_DIR:-$HOME/agv_pro_ros2}" ROS_DISTRO="${ROS_DISTRO:-humble}" ROS_SETUP="${ROS_SETUP:-/opt/ros/$ROS_DISTRO/setup.bash}" ROS_WORKSPACE_SETUP="${ROS_WORKSPACE_SETUP:-$AGV_ROS2_DIR/install/setup.bash}" LOG_DIR="${LOG_DIR:-/tmp}" FLASK_PORT="${FLASK_PORT:-5000}" FLASK_LOG="$LOG_DIR/agv_flask.log" mkdir -p "$LOG_DIR" pkill -f "python.*app.py" 2>/dev/null || true pkill -f "uv run .*python app.py" 2>/dev/null || true sleep 1 source "$ROS_SETUP" 2>/dev/null || true source "$ROS_WORKSPACE_SETUP" 2>/dev/null || true cd "$AGV_APP_DIR" nohup uv run --locked python app.py > "$FLASK_LOG" 2>&1 & echo "Flask started, PID: $!" sleep 2 if ss -tlnp 2>/dev/null | grep -q ":$FLASK_PORT " || netstat -tlnp 2>/dev/null | grep -q ":$FLASK_PORT "; then echo "✅ 端口 $FLASK_PORT 正常" else echo "⚠️ 端口 $FLASK_PORT 未监听,检查 $FLASK_LOG" fi