瀏覽代碼

feat: 添加PaddleX PP-StructureV3服务守护进程脚本,支持启动、停止、状态检查和日志查看功能

zhch158_admin 1 月之前
父節點
當前提交
38caab5f00
共有 1 個文件被更改,包括 190 次插入0 次删除
  1. 190 0
      zhch/ppstructure_v3_daemon.sh

+ 190 - 0
zhch/ppstructure_v3_daemon.sh

@@ -0,0 +1,190 @@
+#!/bin/bash
+
+# PaddleX PP-StructureV3 服务守护进程脚本
+
+LOGDIR="/home/ubuntu/zhch/logs"
+mkdir -p $LOGDIR
+PIDFILE="$LOGDIR/ppstructurev3.pid"
+LOGFILE="$LOGDIR/ppstructurev3.log"
+
+# 配置参数
+CONDA_ENV="paddle"  # 根据您的study-notes.md中的环境名
+PORT="8111"
+DEVICE="gpu:3"
+PIPELINE_CONFIG="/home/ubuntu/zhch/PaddleX/zhch/my_config/PP-StructureV3.yaml"
+
+# 激活conda环境
+conda activate $CONDA_ENV
+
+# 设置模型下载源(可选)
+export PADDLE_PDX_MODEL_SOURCE="bos"
+
+start() {
+    if [ -f $PIDFILE ] && kill -0 $(cat $PIDFILE) 2>/dev/null; then
+        echo "PaddleX PP-StructureV3 is already running"
+        return 1
+    fi
+    
+    echo "Starting PaddleX PP-StructureV3 daemon..."
+    echo "Port: $PORT, Device: $DEVICE"
+    echo "Pipeline config: $PIPELINE_CONFIG"
+    
+    # 检查配置文件是否存在
+    if [ ! -f "$PIPELINE_CONFIG" ]; then
+        echo "❌ Pipeline config file not found: $PIPELINE_CONFIG"
+        return 1
+    fi
+    
+    # 启动PaddleX服务
+    nohup paddlex --serve \
+        --port $PORT \
+        --device "$DEVICE" \
+        --pipeline "$PIPELINE_CONFIG" \
+        > $LOGFILE 2>&1 &
+    
+    echo $! > $PIDFILE
+    echo "✅ PaddleX PP-StructureV3 started with PID: $(cat $PIDFILE)"
+    echo "📋 Log file: $LOGFILE"
+    echo "🌐 Service URL: http://localhost:$PORT"
+    echo "📖 API Documentation: http://localhost:$PORT/docs"
+}
+
+stop() {
+    if [ ! -f $PIDFILE ]; then
+        echo "PaddleX PP-StructureV3 is not running"
+        return 1
+    fi
+    
+    PID=$(cat $PIDFILE)
+    echo "Stopping PaddleX PP-StructureV3 (PID: $PID)..."
+    
+    # 优雅停止
+    kill $PID
+    
+    # 等待进程结束
+    for i in {1..10}; do
+        if ! kill -0 $PID 2>/dev/null; then
+            break
+        fi
+        echo "Waiting for process to stop... ($i/10)"
+        sleep 1
+    done
+    
+    # 如果进程仍在运行,强制结束
+    if kill -0 $PID 2>/dev/null; then
+        echo "Force killing process..."
+        kill -9 $PID
+    fi
+    
+    rm -f $PIDFILE
+    echo "✅ PaddleX PP-StructureV3 stopped"
+}
+
+status() {
+    if [ -f $PIDFILE ] && kill -0 $(cat $PIDFILE) 2>/dev/null; then
+        PID=$(cat $PIDFILE)
+        echo "✅ PaddleX PP-StructureV3 is running (PID: $PID)"
+        echo "🌐 Service URL: http://localhost:$PORT"
+        echo "📋 Log file: $LOGFILE"
+        
+        # 检查端口是否被监听
+        if command -v netstat >/dev/null 2>&1; then
+            if netstat -tuln | grep -q ":$PORT "; then
+                echo "🔗 Port $PORT is being listened"
+            else
+                echo "⚠️  Port $PORT is not being listened (service may be starting up)"
+            fi
+        fi
+        
+        # 显示最新日志
+        if [ -f $LOGFILE ]; then
+            echo "📄 Latest logs (last 5 lines):"
+            tail -5 $LOGFILE
+        fi
+    else
+        echo "❌ PaddleX PP-StructureV3 is not running"
+        if [ -f $PIDFILE ]; then
+            echo "Removing stale PID file..."
+            rm -f $PIDFILE
+        fi
+    fi
+}
+
+logs() {
+    if [ -f $LOGFILE ]; then
+        echo "📄 PaddleX PP-StructureV3 logs:"
+        echo "=================="
+        tail -f $LOGFILE
+    else
+        echo "❌ Log file not found: $LOGFILE"
+    fi
+}
+
+config() {
+    echo "📋 Current configuration:"
+    echo "  Conda Environment: $CONDA_ENV"
+    echo "  Port: $PORT"
+    echo "  Device: $DEVICE"
+    echo "  Pipeline Config: $PIPELINE_CONFIG"
+    echo "  Model Source: ${PADDLE_PDX_MODEL_SOURCE:-default}"
+    echo "  PID File: $PIDFILE"
+    echo "  Log File: $LOGFILE"
+    
+    if [ -f "$PIPELINE_CONFIG" ]; then
+        echo "✅ Pipeline config file exists"
+    else
+        echo "❌ Pipeline config file not found"
+    fi
+}
+
+# 显示使用帮助
+usage() {
+    echo "PaddleX PP-StructureV3 Service Daemon"
+    echo "======================================"
+    echo "Usage: $0 {start|stop|restart|status|logs|test|config}"
+    echo ""
+    echo "Commands:"
+    echo "  start   - Start the PaddleX service"
+    echo "  stop    - Stop the PaddleX service"
+    echo "  restart - Restart the PaddleX service"
+    echo "  status  - Show service status"
+    echo "  logs    - Show service logs (follow mode)"
+    echo "  config  - Show current configuration"
+    echo ""
+    echo "Configuration (edit script to modify):"
+    echo "  Port: $PORT"
+    echo "  Device: $DEVICE"
+    echo "  Pipeline: $PIPELINE_CONFIG"
+    echo ""
+    echo "Examples:"
+    echo "  ./ppstructure_v3_daemon.sh start"
+    echo "  ./ppstructure_v3_daemon.sh status"
+    echo "  ./ppstructure_v3_daemon.sh logs"
+}
+
+case "$1" in
+    start)
+        start
+        ;;
+    stop)
+        stop
+        ;;
+    restart)
+        stop
+        sleep 3
+        start
+        ;;
+    status)
+        status
+        ;;
+    logs)
+        logs
+        ;;
+    config)
+        config
+        ;;
+    *)
+        usage
+        exit 1
+        ;;
+esac