SuperAPI AI 工具集

background-service-manager

部署与运维

查看项目

更新于 10-16 05:09

技能介绍

用途

Background Service Manager 用于创建和管理长时间运行的后台进程。它面向需要持续运行数小时甚至数天的任务,例如批处理作业(提取、嵌入、ETL)、持续数据管道、队列或定时任务的后台工作进程,以及任何需要监控和重启能力的服务。

主要能力

该技能提供以下能力:

  • 启动、停止、状态查询、重启和日志查看等控制命令。
  • 通过 PID 文件跟踪运行中的进程,避免重复启动。
  • 使用 nohup 将进程输出重定向到日志文件。
  • 优雅关闭处理:先发送普通终止信号,等待一段时间后再强制终止。
  • 多服务管理:可同时管理多个服务,支持启动全部、停止全部或操作指定服务。
  • 状态仪表盘:显示数据库统计、后台进程状态和最近活动日志。
  • Python 服务包装器:通过信号处理实现优雅关闭,适用于 Python 编写的后台服务。

使用方式

快速开始步骤:

  1. 复制基础服务脚本模板。
  2. 将 SERVICE_CMD 设置为要运行的实际进程命令。
  3. 赋予可执行权限:chmod +x service.sh。
  4. 启动服务:./service.sh start。
  5. 监控:./service.sh status 或 ./service.sh logs。

基础服务脚本示例:

#!/bin/bash
# Quick service wrapper
SERVICE_NAME="myservice"
PID_FILE="/tmp/${SERVICE_NAME}.pid"
LOG_FILE="/tmp/${SERVICE_NAME}.log"
SERVICE_CMD="python3 ./worker.py"

case "$1" in
    start)
        nohup $SERVICE_CMD >> "$LOG_FILE" 2>&1 &
        echo $! > "$PID_FILE"
        echo "Started (PID: $!)"
        ;;
    stop)
        [ -f "$PID_FILE" ] && kill $(cat "$PID_FILE") && rm "$PID_FILE"
        ;;
    status)
        [ -f "$PID_FILE" ] && kill -0 $(cat "$PID_FILE") 2>/dev/null && echo "Running" || echo "Stopped"
        ;;
    *) echo "Usage: $0 {start|stop|status}" ;;
esac

完整服务脚本支持 start、stop、status、restart、logs 五个命令,包含重复启动检查、优雅关闭等待、强制终止、资源使用显示等功能。

多服务管理脚本通过关联数组定义多个服务,支持按名称启动或停止单个服务,也支持启动全部、停止全部和重启全部。

状态仪表盘脚本可显示数据库统计信息(如文档总数、已提取数、分块总数)、各后台进程运行状态以及最近日志摘要。

Python 服务包装器通过注册 SIGTERM 和 SIGINT 信号处理器,在主循环中检查关闭请求,并在退出前执行清理逻辑。

适用场景

  • 运行长时间批处理作业(提取、嵌入、ETL)。
  • 管理持续数据管道。
  • 队列或定时任务的后台工作进程。
  • 任何需要运行数小时或数天的进程。
  • 需要监控和重启能力的服务。

限制与注意事项

  • 该技能以脚本模板形式提供,需要用户根据实际进程命令进行定制。
  • PID 文件和日志文件默认存放在 /tmp/ 目录,需注意目录权限和磁盘空间。
  • 若进程崩溃后 PID 文件残留,可能出现“Already running”误报,需要手动清理。
  • 日志文件未内置自动轮转,需自行管理日志大小。
  • 文档中未提供关于收费、价格或平台支持的具体信息。