| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #!/bin/bash
- # 生产环境停止脚本
- # 用于停止记忆总结服务
- set -e
- # 获取脚本所在目录
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- cd "$SCRIPT_DIR"
- # 颜色输出
- GREEN='\033[0;32m'
- YELLOW='\033[1;33m'
- RED='\033[0;31m'
- NC='\033[0m' # No Color
- PID_FILE="$SCRIPT_DIR/summarize_memory.pid"
- if [ ! -f "$PID_FILE" ]; then
- echo -e "${YELLOW}⚠️ PID文件不存在,尝试通过进程名查找...${NC}"
- PID=$(pgrep -f "summarize_memory.py" | head -n 1)
- if [ -z "$PID" ]; then
- echo -e "${YELLOW}⚠️ 未找到运行中的记忆总结服务${NC}"
- exit 0
- fi
- else
- PID=$(cat "$PID_FILE")
- fi
- if [ -z "$PID" ]; then
- echo -e "${YELLOW}⚠️ 未找到进程ID${NC}"
- exit 0
- fi
- # 检查进程是否存在
- if ! ps -p "$PID" > /dev/null 2>&1; then
- echo -e "${YELLOW}⚠️ 进程 $PID 不存在,可能已经停止${NC}"
- rm -f "$PID_FILE"
- exit 0
- fi
- echo -e "${YELLOW}🛑 正在停止记忆总结服务 (PID: $PID)...${NC}"
- # 发送 SIGTERM 信号
- kill "$PID" 2>/dev/null || true
- # 等待进程结束(最多等待10秒)
- for i in {1..10}; do
- if ! ps -p "$PID" > /dev/null 2>&1; then
- echo -e "${GREEN}✅ 服务已停止${NC}"
- rm -f "$PID_FILE"
- exit 0
- fi
- sleep 1
- done
- # 如果10秒后仍未停止,强制杀死
- if ps -p "$PID" > /dev/null 2>&1; then
- echo -e "${YELLOW}⚠️ 进程未响应,强制停止...${NC}"
- kill -9 "$PID" 2>/dev/null || true
- sleep 1
-
- if ! ps -p "$PID" > /dev/null 2>&1; then
- echo -e "${GREEN}✅ 服务已强制停止${NC}"
- rm -f "$PID_FILE"
- else
- echo -e "${RED}❌ 无法停止服务,请手动检查${NC}"
- exit 1
- fi
- fi
|