不带子命令就打开界面,带上子命令就是命令行——整套 CLI 就在 ProcHub 这一个安装包里。
后台进程在图形界面里点起来挺顺手,真要反复做就很烦:切窗口、翻卡片、点按钮,再等它转个圈。ProcHub 在同一个程序里内置了一整套命令行,进程的启停、日志、配置都能在终端里完成,而且命令是直接和正在运行的应用通信的。所以有个前提得先说:ProcHub 得开着(最小化到托盘也算)。程序没运行时敲命令,它会直接提示"请先启动 ProcHub",退出码 1,不会自己把应用拉起来。
界面上能做的,终端里也能做,而且是同一个程序。
3 条命令,把进程管起来
先看一组真正会用到的命令。process list 列出全部进程,第一列就是进程 ID,后面跟着状态、PID、重启次数:
$ prochub process list
proc-1 Web Server [运行中] pid=41237 restarts=0
proc-2 Redis [已停止] pid=0 restarts=3
$ prochub process start proc-2
已启动进程:proc-2
$ prochub process logs proc-2 --follow
2026-10-13 10:24:01 ready to accept connections
2026-10-13 10:24:03 ...
start / stop 点名启停某个进程;logs 就是终端里常见的那个 tail——--tail N 相当于 tail -n(默认 100 行),--follow 相当于 tail -f,持续输出新日志,Ctrl+C 退出。ID 用列表第一列那种 proc-1,不是进程名。
命令敲下去的那一刻,界面已经跟着动了。
改配置不用打开设置页
prochub config get 一次看清主题、语言、开机自启、WSL 自启;config set 就地改掉:
$ prochub config set theme dark
已更新主题:dark
$ prochub config set autostart on
已更新开机自动启动:已开启
四条配置项分别是 theme(light/dark)、language(zh/en)、autostart(on/off)、autostart-wsl(on/off)。改完不用重启,界面上的明暗主题和开关马上同步;取值写错了也不含糊,会直接告诉你合法范围。
一份安装包,就能多出一个命令
ProcHub 支持 macOS、Windows、Linux,CLI 就在已安装的那个可执行文件里,不用另下一个二进制:
- macOS:执行
make cli会把已安装的应用软链成prochub命令(需要先有源码仓库、并已安装到/Applications);也可以直接用ProcHub.app/Contents/MacOS/ProcHub。 - Windows / Linux:直接调用安装目录里的
ProcHub.exe/ProcHub,或把它加进 PATH、起个别名。
另外还有 prochub version 看版本、prochub status 显示连接情况、进程总数与运行数、数据目录。Windows 上 wsl status/start/stop/restart 能查看 WSL 状态并手动启停(其他平台会明确提示不支持),而 autostart-wsl 只管开机要不要自动拉起 WSL,和手动启停互不影响。
命令清单
prochub 把能力分成 process、config、wsl 三组,help / -h、version / -v 是别名:
- 进程:
process list/process start <id>/process stop <id>/process logs <id> [--tail N] [--follow](--tail默认 100) - 配置:
config get/config set theme|language|autostart|autostart-wsl - 子系统:
wsl status/wsl start/wsl stop/wsl restart - 其他:
status、version
安全上做得挺细:控制接口只监听本机回环地址 127.0.0.1,每次请求都要带上 32 字节随机令牌,auth.json 以仅本人可读的权限写入,应用退出即删除。退出码也分得清——0 成功,1 出错(多数错误,包括取值非法、进程不存在),2 没给参数或认不出子命令。边界也说清楚:令牌挡的是局域网访问和误触,同机上能读到你 auth.json 的进程,本来就跟你有一样大的权限。
它是怎么做到的
程序在打开界面前先看一眼第一个参数:是已知子命令就执行 CLI 然后退出,不是才照常打开界面,同一个可执行文件于是有了两条入口(main.go 的提前分派 + internal/cli/run.go 的白名单)。
CLI 自己不管进程,它读取应用启动时写入数据目录的 auth.json(端口 + 令牌),通过本地 HTTP 控制接口把请求转给运行中的应用;配置变更由后端统一广播一个 config:changed 事件,前端 Store 集中承接,CLI、托盘这些外部来源的改动都会推给界面,两边状态因此始终一致。
你的后台进程是常驻在桌面机,还是跑在没界面的服务器上?评论区聊聊你的用法,我看看这套 CLI 还缺什么。
你敲的每条命令,界面都看在眼里。