在某算力平台里,实例是使用虚拟化容器的方式启动的,而不是虚拟机,也就是说 PID 1 的进程并不是 systemd,因此无法使用 systemd 来管理后台进程,于是考虑使用 process-compose 来管理。
process-compose 使用类似 docker-compose 的配置文件管理后台进程,还支持在 TUI 中查看进程日志,非常方便。本文后面还会使用 beszel 作为实例演示 process-compose 的使用方法。
安装
推荐使用 mise 完成安装,参考 mise:一个更灵活的包管理工具,附常见工具推荐 - process-compose。
也可以根据官方文档,使用以下命令安装:
sh -c "$(curl --location https://raw.githubusercontent.com/F1bonacc1/process-compose/main/scripts/get-pc.sh)" -- -d -b ~/.local/bin可执行将安装到 ~/.local/bin/process-compose 。
初始化
修改 ~/.bashrc ,追加以下内容:
pc() {
local hash port
hash=$(printf '%s' "$PWD" | sha256sum | cut -c1-8)
port=$((20000 + 16#$hash % 40000))
process-compose -p "$port" "$@"
}这样能较为方便的使用 up、attach 等命令。
使用
beszel
此小节我们用 beszel 实践 process-compose 的使用,beszel 的安装可参考 mise:一个更灵活的包管理工具,附常见工具推荐 - baszel。
新建文件夹 ~/.config/process-compose/baszel 并进入:
mkdir -p ~/.config/process-compose/baszel
cd ~/.config/process-compose/baszel编辑文件 ./compose.yaml:
version: "0.5"
processes:
beszel-hub:
command: "beszel serve --http 0.0.0.0:8090"
environment:
- "APP_URL=http://localhost:8090"
availability:
restart: always
backoff_seconds: 5
beszel-agent:
command: "beszel-agent"
environment:
- "USE_CGROUP=true"
- "KEY=ssh-ed25519 xxx"
- "TOKEN=xxx"
- "URL=http://localhost:8090"
availability:
restart: on_failure
backoff_seconds: 5启动项目:
pc up -D在算力平台上暴露端口 8090,访问 http://xxx:8090 ,默认账号 beszel 、默认密码 beszel-admin。登录后,点击右上角“添加系统”,弹出如图界面:

名称可自定义,主机/IP 填写 localhost,填写完成后点击“添加 系统”。
修改文件 ./compose.yaml,将刚刚弹窗中的公钥和令牌填入文件中:
...
backoff_seconds: 5
beszel-agent:
command: "beszel-agent"
environment:
- "USE_CGROUP=true"
- "KEY=ssh-ed25519 xxx" # 公钥填这里
- "TOKEN=xxx" # 令牌填这里
- "URL=http://localhost:8090"
...应用更改:
pc project update -f compose.yaml刷新网页,应该就能看到信息更新了。
上述配置文件中 USE_CGROUP=true 的作用为监控容器内的 CPU 和内存资源,但截止撰写本文时 beszel 最新版本为 v0.21.0,该版本尚未支持,预计下个版本将支持。在下一个版本更新前,网页上监控的资源将是整台物理机的资源,而不是容器内实际能使用的资源。