一个轻量级的服务进程管理平台,用于统一管理本地或远程服务的启动、停止、日志查看和端口冲突处理。

weisijie 5e10907ae3 1. 实现了日志界面自动刷新功能,默认每秒拉取一次最新日志,频率通过后端 application.yml 配置(app.log.refresh-interval); 2 هفته پیش
backend 5e10907ae3 1. 实现了日志界面自动刷新功能,默认每秒拉取一次最新日志,频率通过后端 application.yml 配置(app.log.refresh-interval); 2 هفته پیش
frontend 5e10907ae3 1. 实现了日志界面自动刷新功能,默认每秒拉取一次最新日志,频率通过后端 application.yml 配置(app.log.refresh-interval); 2 هفته پیش
.gitignore db83a1d56a 1. 将prompt.md加入git管理。 2 ماه پیش
LICENSE 64cd6b2305 1. 实现了服务进程管理平台,支持服务的创建、编辑、删除和启停控制;2. 实现了多终端类型支持,包括 CMD、PowerShell、Git Bash 和 SSH 远程执行;3. 实现了启动命令解析引擎,支持可选片段语法和自定义变量替换;4. 实现了进程 PID 持久化,应用重启后可自动恢复服务的运行状态;5. 实现了实时日志查看功能,支持 UTF-8、GB18030 等多种字符编码;6. 实现了端口冲突管理功能,自动检测端口占用并支持终止冲突进程;7. 实现了 Web 界面跳转功能,点击运行中的服务卡片可直接打开浏览器;8. 实现了一键启停所有服务的能力;9. 新增了统一构建部署方案,前后端同端口(3945)单一 JAR 部署;10. 新增了 Windows 和 Linux/macOS 构建运行脚本。 2 ماه پیش
README.md d53f62e2a5 1. 扩充了端口冲突管理功能,端口类变量新增复数形式,变量值支持以逗号分隔的多个端口号,检测时对每个端口分别查询占用并支持单独终止; 1 ماه پیش
prompt.md 5e10907ae3 1. 实现了日志界面自动刷新功能,默认每秒拉取一次最新日志,频率通过后端 application.yml 配置(app.log.refresh-interval); 2 هفته پیش
run.bat 64cd6b2305 1. 实现了服务进程管理平台,支持服务的创建、编辑、删除和启停控制;2. 实现了多终端类型支持,包括 CMD、PowerShell、Git Bash 和 SSH 远程执行;3. 实现了启动命令解析引擎,支持可选片段语法和自定义变量替换;4. 实现了进程 PID 持久化,应用重启后可自动恢复服务的运行状态;5. 实现了实时日志查看功能,支持 UTF-8、GB18030 等多种字符编码;6. 实现了端口冲突管理功能,自动检测端口占用并支持终止冲突进程;7. 实现了 Web 界面跳转功能,点击运行中的服务卡片可直接打开浏览器;8. 实现了一键启停所有服务的能力;9. 新增了统一构建部署方案,前后端同端口(3945)单一 JAR 部署;10. 新增了 Windows 和 Linux/macOS 构建运行脚本。 2 ماه پیش
run.sh 64cd6b2305 1. 实现了服务进程管理平台,支持服务的创建、编辑、删除和启停控制;2. 实现了多终端类型支持,包括 CMD、PowerShell、Git Bash 和 SSH 远程执行;3. 实现了启动命令解析引擎,支持可选片段语法和自定义变量替换;4. 实现了进程 PID 持久化,应用重启后可自动恢复服务的运行状态;5. 实现了实时日志查看功能,支持 UTF-8、GB18030 等多种字符编码;6. 实现了端口冲突管理功能,自动检测端口占用并支持终止冲突进程;7. 实现了 Web 界面跳转功能,点击运行中的服务卡片可直接打开浏览器;8. 实现了一键启停所有服务的能力;9. 新增了统一构建部署方案,前后端同端口(3945)单一 JAR 部署;10. 新增了 Windows 和 Linux/macOS 构建运行脚本。 2 ماه پیش

README.md

Service Management

一个轻量级的服务进程管理平台,用于统一管理本地或远程服务的启动、停止、日志查看和端口冲突处理。

技术栈

层级 技术
后端 Java 17 + Spring Boot 3.2
前端 Vue 3 + TypeScript + Vite
UI PrimeVue (Aura Theme) + PrimeIcons
部署 统一打包为单一 JAR,前后端同端口

功能特性

  • 服务管理 — 创建、编辑、删除服务配置
  • 分类管理 — 无限层级的分类树,支持创建、重命名、删除、按分类筛选
  • 多终端支持 — CMD、PowerShell、Git Bash、SSH 远程执行
  • 启动命令引擎 — 支持多行命令、[可选片段] 语法、{{变量}} 替换
  • 进程管理 — 后台启动、PID 追踪、优雅停止(10s 超时后强制终止)
  • PID 持久化 — 进程 PID 写入磁盘,应用重启后自动恢复运行状态
  • 实时日志 — 在线查看服务输出,支持多种字符编码(UTF-8、GB18030 等)
  • Web 界面跳转 — 配置 Web URL 后,点击服务卡片即可在浏览器中打开(不要求服务由本平台启动,外部启动亦可)
  • 端口冲突管理 — 自动检测端口占用,支持单/多端口变量(PORTPORTSSERVER_PORTSERVER_PORTS 等,多端口值以逗号分隔),查看占用进程详情,确认后一键终止
  • 一键启停 — 支持一键启动/停止所有服务
  • 全局交互反馈 — 自定义 Toast 通知与确认对话框,替代浏览器原生 alert/confirm,统一交互体验
  • 统一部署 — 前端编译后嵌入 Spring Boot 静态资源,单一 JAR 部署

快速开始

环境要求

  • Java 17+
  • Maven 3.6+
  • Node.js 18+(仅构建前端时需要)

构建 & 运行

Windows:

run.bat build
run.bat run

Linux / macOS / Git Bash:

chmod +x run.sh
./run.sh build
./run.sh run

构建完成后,浏览器访问 http://localhost:3945

单独运行(已构建)

cd backend
java -jar target/service-management-1.0.0.jar

项目结构

service-management/
├── backend/                    # Spring Boot 后端
│   ├── pom.xml
│   └── src/main/
│       ├── java/com/svcman/
│       │   ├── controller/     # REST API 控制器
│       │   ├── model/          # 数据模型
│       │   ├── repository/     # JSON 文件持久化存储
│       │   ├── service/        # 核心业务逻辑
│       │   └── config/         # Web 配置(CORS、SPA 路由)
│       └── resources/
│           ├── application.yml
│           ├── logback-spring.xml
│           └── static/         # 前端构建产物(自动生成)
├── frontend/                   # Vue 3 前端
│   ├── package.json
│   ├── vite.config.ts
│   └── src/
│       ├── api/                # Axios API 层
│       ├── components/         # Vue 组件
│       ├── composables/        # 全局可复用组合式函数(useDialog 等)
│       └── main.ts
├── data/                       # 运行时数据(自动生成,不入版本库)
│   ├── services.json           # 服务配置持久化
│   └── pids/                   # PID 文件持久化
├── logs/                       # 运行日志(自动生成,不入版本库)
├── run.bat                     # Windows 构建运行脚本
└── run.sh                      # Linux/macOS 构建运行脚本

API 接口

方法 路径 说明
GET /api/services 获取所有服务
GET /api/services/{id} 获取单个服务
POST /api/services 创建服务
PUT /api/services/{id} 更新服务
DELETE /api/services/{id} 删除服务
POST /api/services/{id}/start 启动服务
POST /api/services/{id}/stop 停止服务
POST /api/services/start-all 一键启动
POST /api/services/stop-all 一键停止
GET /api/services/{id}/log 获取服务日志
GET /api/services/{id}/web-url 获取解析后的 Web URL
GET /api/services/{id}/port-check 检查端口占用
POST /api/services/{id}/kill-port/{pid} 终止占用端口的进程

启动命令语法

启动命令支持多行,每行一条命令,按顺序执行:

mvn package
java -jar [--server.port={{SERVER_PORT}}] target/app-1.0.0.jar
语法 说明 示例
{{VAR}} 自定义变量占位符 {{SERVER_PORT}}
[content] 可选片段,仅当内部所有变量都有值时才保留 [--port={{PORT}}]
{{VAR:default}} 带默认值的变量(仅用于 Web URL) {{PORT:8080}}

配置说明

服务配置存储在 data/services.json,主要字段:

{
  "name": "用户服务",
  "description": "用户管理微服务",
  "startupCommand": "java -jar [--server.port={{SERVER_PORT}}] app.jar",
  "workDir": "D:/projects/user-service",
  "terminalType": "CMD",
  "variables": [
    { "name": "SERVER_PORT", "value": "8080" }
  ],
  "webUrl": "http://localhost:{{SERVER_PORT:8080}}/index.html",
  "logEncoding": "UTF-8"
}

License

MIT