#!/usr/bin/env bash # ============================================================================= # OmniShopAgent - 停止脚本 # 停止 Streamlit 进程及 Milvus 容器 # ============================================================================= set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" STREAMLIT_PORT="${STREAMLIT_PORT:-8501}" echo "==========================================" echo "OmniShopAgent 停止" echo "==========================================" # 1. 停止 Streamlit 进程 echo "[1/2] 停止 Streamlit..." if pgrep -f "streamlit run app.py" >/dev/null 2>&1; then pkill -f "streamlit run app.py" 2>/dev/null || true echo " Streamlit 已停止" else echo " Streamlit 未在运行" fi # 按端口查找并终止 if command -v lsof &>/dev/null; then PID=$(lsof -ti:$STREAMLIT_PORT 2>/dev/null || true) if [ -n "$PID" ]; then kill $PID 2>/dev/null || true echo " 已终止端口 $STREAMLIT_PORT 上的进程" fi fi # 2. 可选:停止 Milvus 容器 echo "[2/2] 停止 Milvus..." if command -v docker &>/dev/null; then cd "$PROJECT_ROOT" docker compose down 2>/dev/null || docker-compose down 2>/dev/null || true echo " Milvus 已停止" else echo " Docker 未安装,跳过" fi echo "==========================================" echo "OmniShopAgent 已停止" echo "=========================================="