#!/usr/bin/env bash # 本地 PDF→Markdown 微服务(与 langchain file_converter.pdf_to_html 约定一致,默认 :6006) # 依赖 conda 环境 langchain-chat(含 fastapi、uvicorn、PyMuPDF) [ -n "${BASH_VERSION:-}" ] || exec /usr/bin/env bash "$0" ${1+"$@"} set -u source "$(cd "$(dirname "$0")" && pwd)/common-restart.sh" LOG_FILE="$LOG_DIR/pdf-convert-service.log" LC_ROOT="$GANGYAN_ROOT/langchain-chat" CONDA_SH="/opt/software/miniconda3/etc/profile.d/conda.sh" log_line() { local s="[$(date '+%Y-%m-%d %H:%M:%S')] $*" echo "$s" >> "$LOG_FILE" echo "$s" } log_line "======== 停止 pdf-convert-service (6006) ========" pkill -f "uvicorn.*pdf_convert_service\.app:app" 2>/dev/null || true sleep 1 if command -v lsof >/dev/null 2>&1; then for pid in $(lsof -ti :6006 -sTCP:LISTEN 2>/dev/null || true); do kill -TERM "$pid" 2>/dev/null && log_line "TERM pid=$pid :6006" done sleep 1 for pid in $(lsof -ti :6006 -sTCP:LISTEN 2>/dev/null || true); do kill -KILL "$pid" 2>/dev/null && log_line "KILL pid=$pid :6006" done fi log_line "======== 启动 pdf-convert-service ========" if [ ! -f "$CONDA_SH" ]; then log_line "错误: 未找到 $CONDA_SH" exit 1 fi # shellcheck source=/dev/null source "$CONDA_SH" conda activate langchain-chat cd "$LC_ROOT" export PYTHONPATH="$LC_ROOT" export PDF_CONVERT_KB_ROOT="${PDF_CONVERT_KB_ROOT:-$LC_ROOT/knowledge_base}" export PDF_CONVERT_HOST="${PDF_CONVERT_HOST:-127.0.0.1}" export PDF_CONVERT_PORT="${PDF_CONVERT_PORT:-6006}" nohup python -m uvicorn pdf_convert_service.app:app \ --host "$PDF_CONVERT_HOST" --port "$PDF_CONVERT_PORT" \ >> "$LOG_FILE" 2>&1 & log_line "已后台启动 PID=$! 监听 ${PDF_CONVERT_HOST}:${PDF_CONVERT_PORT}" log_line "日志: $LOG_FILE KB_ROOT=$PDF_CONVERT_KB_ROOT" log_line "健康检查: curl -sS http://${PDF_CONVERT_HOST}:${PDF_CONVERT_PORT}/health"