> ## Content Index
> Fetch the complete content index at: https://sgpublic.xyz/llms.txt
> Use this file to discover other available public pages before exploring further.

# 在无 systemd 的 Linux 环境中管理后台进程
- URL: https://sgpublic.xyz/p/2026/10/6ad586fc404a0500012b7fce/
- Published: 2026-10-19T11:03:01.000Z
- Updated: 2026-10-19T11:40:55.000Z
- Author: Haven Madray
- Tags: 运维, 算力平台

在某算力平台里，实例是使用虚拟化容器的方式启动的，而不是虚拟机，也就是说 PID 1 的进程并不是 systemd，因此无法使用 systemd 来管理后台进程，于是考虑使用 [process-compose](https://github.com/F1bonacc1/process-compose?ref=sgpublic.xyz) 来管理。

process-compose 使用类似 docker-compose 的配置文件管理后台进程，还支持在 TUI 中查看进程日志，非常方便。本文后面还会使用 beszel 作为实例演示 process-compose 的使用方法。

## 安装

推荐使用 mise 完成安装，参考 [mise：一个更灵活的包管理工具，附常见工具推荐 - process-compose](https://sgpublic.xyz/p/2026/10/6ad596dc404a0500012b805e/#process-compose)。

也可以根据[官方文档](https://f1bonacc1.github.io/process-compose/installation/?ref=sgpublic.xyz#install-script)，使用以下命令安装：

```bash
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` ，追加以下内容：

```shell
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](https://github.com/henrygd/beszel?ref=sgpublic.xyz) 实践 process-compose 的使用，beszel 的安装可参考 [mise：一个更灵活的包管理工具，附常见工具推荐 - baszel](https://sgpublic.xyz/p/2026/10/6ad596dc404a0500012b805e/#beszel)。

新建文件夹 `~/.config/process-compose/baszel` 并进入：

```shell
mkdir -p ~/.config/process-compose/baszel
cd ~/.config/process-compose/baszel
```

编辑文件 `./compose.yaml`：

```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
```

启动项目：

```shell
pc up -D
```

在算力平台上暴露端口 8090，访问 `http://xxx:8090` ，默认账号 `beszel` 、默认密码 `beszel-admin`。登录后，点击右上角“添加系统”，弹出如图界面：

![](https://sgpublic.xyz/content/images/2026/10/image.png)

名称可自定义，主机/IP 填写 `localhost`，填写完成后点击“添加 系统”。

修改文件 `./compose.yaml`，将刚刚弹窗中的公钥和令牌填入文件中：

```yaml
...
      backoff_seconds: 5
  beszel-agent:
    command: "beszel-agent"
    environment:
      - "USE_CGROUP=true"
      - "KEY=ssh-ed25519 xxx" # 公钥填这里
      - "TOKEN=xxx" # 令牌填这里
      - "URL=http://localhost:8090"
...
```

应用更改：

```shell
pc project update -f compose.yaml
```

刷新网页，应该就能看到信息更新了。

> 上述配置文件中 USE\_CGROUP=true 的作用为监控容器内的 CPU 和内存资源，但截止撰写本文时 beszel 最新版本为 v0.21.0，该版本尚未支持，预计下个版本将支持。在下一个版本更新前，网页上监控的资源将是整台物理机的资源，而不是容器内实际能使用的资源。