dsh-service-board:查看 Agent 会话启动的服务

前言

在使用 DSH 进行开发或部署时,经常需要通过 Agent 会话启动多个后台服务(如 Web 服务器、数据库代理等)。当服务数量增加,管理这些进程的启动者、日志位置以及健康状态会变得困难。dsh-service-board 插件提供了一块停靠式面板,能够直观地按会话分组展示服务,并支持实时日志查看与进程控制。

是什么

dsh-service-board 是一个 DSH 服务面板插件,用于在 Web GUI 侧边栏查看由哪个对话(Agent 会话)启动了哪些服务。

该插件基于上游 dsh-process-board 分叉开发,修复了若干已知缺陷(如重启后日志不可用、同名进程合并错误、面板抢占输入框焦点等),并增加了停靠式面板、运行时长统计与筛选功能。它遵循 MIT 协议,无运行时依赖。

核心功能

  • 按会话分组:自动关联进程归属的对话(Agent 会话)。
  • 健康与状态:提供三态健康探测(端口/HTTP 码/PID)。
  • 进程信息:显示启动时间与运行时长。
  • 控制能力:支持礼貌停止(SIGTERM)与原地重启(重放原命令行)。
  • 日志查看:实时 tail 日志,支持按 ERROR(红)/ WARN(黄)着色。
  • 停靠式面板:面板停靠在右侧,宽度可拖拽调整,支持全屏日志。
  • 筛选:支持按会话范围、端口白名单与关键字隐藏服务。

安装与启用

安装前需确保 DSH 已安装且可用。根据使用端不同,需选择对应的 profile(如 web 或 desktop)。

# 网页端安装示例
dsh plugin --profile web add dsh-service-board

安装完成后,重启 DSH 宿主(桌面应用需完全退出后重新打开,dsh web 需重新启动),侧边栏会出现「进程面板」入口。

注意:与上游 dsh-process-board 同时安装会插入两条侧边栏入口,请仅安装其中一个。

使用方法

在侧边栏点击「进程面板」,右侧会展开停靠面板。

基本操作

  1. 查看日志:点击列表中的服务,面板下方展开实时日志带(ERROR 为红,WARN 为黄,4 秒自动刷新,支持全屏)。
  2. 重启服务:点击「重启」按钮,面板内会确认原命令行,随后停止进程树并按原命令行以 detached 方式重启。重启后会等待一次扫描(约 1–3 秒)刷新状态。
  3. 停止服务:点击「停止」按钮,先进行礼貌终止(SIGTERM/taskkill),给予 10 秒宽限期后强杀进程树。对于 Windows SCM 托管的服务,会显示为「Windows 服务」且无法停止。

筛选与配置

插件支持配置筛选规则,将配置写入 ~/.dsh/gate/process-board/config.json,下次扫描即生效。筛选条件包括:
* scope:监控范围(全部 / 仅会话启动)。
* ports:端口白名单。
* hide:隐藏关键字。

让面板可见

面板默认只显示带有特定标记的进程。要被面板识别并管理,需设置环境变量:
* DSH_SESSION_ID:标识进程归属的会话 ID。
* DSH_PB_LOG:指定该进程的日志文件路径(/log 接口仅允许读取该路径)。

例如在 Windows PowerShell 中启动服务:

$env:DSH_PB_LOG = "$env:TEMP\my-service.log"
Start-Process java -ArgumentList '-jar','app.jar' -RedirectStandardOutput $env:DSH_PB_LOG -WindowStyle Hidden

权限与限制

该插件需要以下系统权限才能正常运行:
* 读取进程信息:在 Windows 上通过 WMI 和 PEB 环境块读取进程列表、命令行、端口与环境变量。
* 终止进程:具备终止进程树的能力。
* 启动进程:具备以 detached 方式启动进程的能力。
* 本地 HTTP:插件在 DSH Web Server 上挂载了 /state、/config、/kill、/log、/start 路由,仅监听 Loopback,并校验 Host/Origin 以防跨站请求。

平台限制:
* 进程扫描与会话归属:目前仅 Windows 平台已实现(使用 WMI/PEB)。在 macOS / Linux 上,扫描器直接返回空数组,面板 UI 可用但列表为空。

结尾

dsh-service-board 是一个面向本地开发者的工具,它将进程管理能力集成到 DSH 的 Web 界面中。通过会话分组与停靠式面板,它让在 Agent 环境中调试服务变得更为直观。

  • GitHub 仓库:https://github.com/fanjinduo111/dsh-service-board
  • 插件目录:https://www.skillhub.cn/plugins/fanjinduo111/dsh-service-board
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜