bottom 介绍与选型指南
bottom(ClementTsang/bottom,命令 btm)是 Rust 编写的跨平台终端系统监控工具,本篇溯源其架构、功能与 htop/btop/gtop/glances 的量化选型对比,附场景建议。
bottom 介绍与选型指南
目标:讲清 bottom(ClementTsang/bottom,命令
btm)这一 Rust 编写的跨平台终端系统监控工具的定位、架构、功能与维护现状,并与 htop、btop、gtop、glances 做量化选型对比,帮助读者判断「什么场景该选 bottom、什么场景不该选」。本文为认知篇,全部事实性内容(版本、星数、发布节奏、平台支持)均来自官方仓库与官方文档联网溯源,溯源来源与查询日期见「一、环境信息」。
一、环境信息
本篇为认知篇,不依赖本机实验环境;下列事实均于 2026-10-23 通过公开渠道联网溯源取得,来源如下:
| 溯源对象 | 来源 | 关键事实 |
|---|---|---|
| 最新稳定版 | GitHub Releases(releases.atom) | 0.14.9 Release,发布于 2026-08-27 |
| 发布节奏 | 同上 | 2026-10-01、2026-10-02、2026-10-04 连续发布 Nightly 构建 |
| 星数 | GitHub 仓库页 HTML(内嵌 stargazerCount) | 14,116 |
| 许可证 | 仓库页 HTML(内嵌 license: spdxId) | MIT |
| 仓库创建时间 | 仓库页 HTML(内嵌 createdAt) | 2019-08-28 |
| 官方支持平台 | 官方文档 support/official.md | macOS(x86_64、aarch64)、Linux(x86_64、i686、aarch64)、Windows(x86_64、i686) |
| 程序自述 | btm --help 输出首行 | "A customizable cross-platform graphical process/system monitor for the terminal. Supports Linux, macOS, and Windows." |
💡 说明:GitHub API 直连(api.github.com)存在匿名限流,本篇星数与仓库元数据一律取自仓库页面 HTML 中内嵌的结构化字段(
stargazerCount、createdAt、license),与 API 数据同源,取证方式更稳定。
二、软件概述
bottom 是 Clement Tsang(GitHub ID:ClementTsang)自 2019 年 8 月起维护的开源终端系统监控工具,仓库地址 github.com/ClementTsang/bottom,采用 MIT 许可证,可自由商用与二次分发。安装后的命令名为 btm(bottom 的缩写,与工具同名区分开)。
用官方在 btm --help 中的自述来说,它是一个「可定制的、跨平台的、图形化的终端进程/系统监视器」。这一定位有三个关键词:
- 跨平台:macOS、Linux、Windows 全部官方支持(另有社区构建覆盖 FreeBSD、Android 等),同一份配置文件(TOML 格式)与同一套快捷键在三大平台行为一致,这对混合操作系统环境的运维人员很友好。
- 图形化(TUI):以字符画布绘制折线图、柱状图与表格,CPU/内存/网络等指标默认以时序图形式滚动展示,而不是 htop 式的纯文本表格。
- 可定制:从布局(每个组件的位置与占比)、列(进程表/磁盘表显示哪些列)、配色(6 套内置主题 + 全量自定义配色)到刷新率、时间窗口全部可配置,配置落在单个 TOML 文件里。
截至 2026-10-23,项目处于活跃维护状态:最新稳定版 0.14.9 发布于 2026-08-27,且 2026 年 10 月连续多日发布 Nightly 构建(10-01、10-02、10-04),说明主干开发与测试流水线持续运转。
💡 技术拓展:bottom 默认用「盲文点阵(braille)」字符绘制折线图,同为字符画布方案,业界还有几种常见呈现方式,横向对比——
呈现方式 原理 效果与取舍 代表工具 盲文点阵 braille 用 U+2800 区盲文字符的 2×4 点位拼图形 曲线平滑细腻,等宽字体下信息密度最高 bottom(默认) 点状 dot 用 ·/.等单字符标记数据点简单清晰,但曲线连续性差 bottom( btm -m可切换)ASCII 块状条 用 ` 、#`、空格拼水平/垂直条形无曲线,胜在极简、兼容性最好 全图形 TUI 基于 ncurses/自绘画布的柱状仪表 视觉丰富,依赖较重 btop、gtop bottom 三种形态(braille 图形 / dot 图形 / 基础条形)内置同一二进制,切换只需一个启动参数或配置项,无需更换工具。
三、核心架构
bottom 的架构可以用「单二进制、单进程、零依赖外部服务」概括,这与它「本机监控工具」的定位一致:
- 采集层:启动后按刷新率(默认 1s,
--rate可调)直接读取本机内核接口——Linux 上读取/proc、/sys文件系统获取 CPU、内存、磁盘、网络、进程数据;温度来自传感器接口;GPU 数据通过 NVIDIA NVML 与 AMD 接口获取(--disable_gpu可关闭)。Windows/macOS 各走平台原生 API。 - 存储层:采集到的时序数据保存在进程内存中,默认保留最近 10 分钟(
--retention可调大,如 1h),不落盘、不写数据库。因此 bottom 退出即历史清零,也没有「昨天/上周」的回看能力。 - 呈现层:基于 Rust TUI 生态的 crossterm(终端事件与渲染抽象)+ ratatui(组件与布局库,0.14.x 实际编译依赖 ratatui 0.30.x,可在
cargo install bottom编译日志中看到)绘制界面。界面由组件(widget)组成,默认布局分三行:第一行 CPU 图,第二行内存图 + 温度表 + 磁盘表,第三行网络图 + 进程表;布局可整体替换。 - 交互层:全键盘操作(Vim 风格 j/k/gg/G 移动、e 展开组件、f 冻结、? 帮助)+ 可选鼠标点击选择组件。支持对进程发送信号(kill),
--read_only可整体禁用一切影响系统的操作。
两点架构上的「没有」同样重要,直接影响选型:
- 没有后台守护进程:btm 只是一个前台 TUI 进程,关掉终端监控即停止,不提供 C/S 模式、HTTP API 或数据导出文件。需要「远程监控」时,官方定位是 SSH 到目标机器运行 btm(本系列《bottom 0.14.9 常用 CLI 命令与工具详解》篇有 SSH 场景实测);需要常驻采集、Web 页面或 API 对接时,应选 glances 或 Prometheus 体系。
- 没有告警与通知:不内置任何阈值告警,也不会写日志。它定位是「人看着的仪表盘」,不是「无人值守的监控服务」。
四、功能特性
以下特性清单来自官方文档与 0.14.9 版 btm --help 实查(2026-10-23):
| 功能域 | 特性 | 说明 |
|---|---|---|
| 监控组件 | CPU、内存、温度、磁盘、网络、进程 | 默认布局六组件;GPU(NVIDIA/AMD)自动发现;电池组件(笔记本场景,--battery) |
| 显示形态 | 图形模式 / 基础模式 | -b/--basic 切换为 htop 风格的条形+表格布局,老旧终端兼容性好 |
| 进程视图 | 树模式、进程分组、全命令行显示 | -T/--tree 启动即树形;-g 按名分组;可自定义列与默认排序列 |
| 进程搜索 | 大小写、整词、正则 | -S/-W/-R 分别设置默认开启大小写敏感/整词/正则搜索 |
| 进程管理 | 发送信号(kill)、高级 kill 对话框 | --disable_advanced_kill 简化;--read_only 全面只读 |
| 图表控制 | 时间窗口、缩进步长、数据保留 | 默认 60s 窗口(-t)、缩进 15s(-d)、保留 10m(--retention) |
| 单位控制 | 温度单位、网络单位、二进制前缀 | -c/-f/-k 摄氏/华氏/开尔文;网络默认 bits,可切 bytes/二进制前缀/对数刻度 |
| 外观 | 6 套内置主题 + 全量自定义配色 | default、default-light、gruvbox、gruvbox-light、nord、nord-light(--theme) |
| 布局定制 | TOML 自定义行/列/组件占比 | [[row]]/[[row.child]] 嵌套定义,支持重复组件 |
| 配置持久化 | 单一 TOML 配置文件 | Linux 默认 ~/.config/bottom/bottom.toml,首跑自动生成 |
| 输入设备 | 键盘 + 鼠标 | --disable_click/--disable_keys 可分别禁用 |
⚠️ 注意:GPU 组件依赖构建特性与机器实际硬件:无 NVIDIA/AMD GPU 的服务器上 GPU 信息不显示;温度组件依赖传感器暴露(部分虚拟机或受限环境下读不到传感器,温度表为空属正常现象)。
五、快速开始(最小可用示例)
在 Ubuntu 22.04 服务器上,两条命令完成安装(deb 包来自 GitHub Releases,已在本系列安装指南中逐条实测):
# 下载 0.14.9 官方 deb 包(x86_64)
curl -LO https://github.com/ClementTsang/bottom/releases/download/0.14.9/bottom_0.14.9-1_amd64.deb
# 安装并验证
dpkg -i bottom_0.14.9-1_amd64.deb && btm -V
实测安装验证回显:
bottom 0.14.9
启动与退出:
btm # 启动默认仪表盘;按 q 或 Q 或 Ctrl-c 退出
需要说明的一个实测行为:btm 必须运行在真实终端(TTY)中。在无终端环境下直接执行会得到如下实测回显后退出(退出码 1):
Warning: bottom is not being output to a terminal. Things might not work properly.
If you're stuck, press 'q', 'Q', or 'Ctrl-c' to quit the program.
Error: No such device or address (os error 6)
💡 说明:这条限制意味着 bottom 不能放进 cron/CI 等无人值守流程里「采集数据」,再次印证其「交互式仪表盘」定位。多路径安装(deb/rpm/tar.gz/cargo)与完整验证过程见《Ubuntu 22.04 安装 bottom 0.14.9 指南》。
六、适用场景与限制
适合用 bottom 的场景:
- 日常单机巡检:SSH 登上服务器后想一眼看清「谁在吃 CPU、磁盘写没写爆、网络有没有异常流量」,btm 一屏给出六组件视图,比 top 信息密度高、比 htop 多了图表与磁盘/网络维度。
- 交互式排障:进程搜索支持正则与整词匹配、可按任意列排序、可当场 kill,树模式能定位「父进程-子进程」关系,适合排查 fork 风暴、僵尸进程树。
- 混合操作系统团队:同一二进制与同一配置文件在 Linux/macOS/Windows 行为一致,跨平台运维可共用一份
bottom.toml。 - 低依赖环境:静态编译的 Rust 单二进制(tar.gz 版、musl 版无 glibc 依赖),丢进老系统或最小化系统环境即可运行。
不适合选 bottom 的场景(限制):
- 需要无人值守监控/告警:无守护进程、无 Web UI、无 API、无数据导出、无告警通知,这类需求选 glances(Web/REST API 模式)或 Prometheus + Grafana。
- 需要历史回看:内存中仅保留默认 10 分钟时序(
--retention上限受内存制约),没有跨会话持久化。 - 需要远程集中监控多台机器:btm 没有 C/S 模式,逐台 SSH 是唯一用法;要一屏看多机应选 glances C/S 模式或 node_exporter 集群方案。
- 极老的终端:图形模式依赖盲文字体与足够终端尺寸,老旧串口终端建议用
-b基础模式或直接用 htop。
七、同类选型对比
下表对五款常被拿来对比的终端/系统监控工具做量化对比。星数均取自各自 GitHub 仓库页 HTML(2026-10-23 实查);版本为各自 Releases 最新稳定版(2026-10-23 实查,glances/gtop 详见站内对应专栏)。
| 维度 | bottom (btm) | htop | btop | gtop | glances |
|---|---|---|---|---|---|
| 编写语言 | Rust | C | C++ | Node.js | Python |
| 最新稳定版(2026-10-23) | 0.14.9(2026-08-27) | 3.5.3 | v1.4.7 | 1.1.5 | 4.5.8 |
| Stars | 14,116 | 8,410 | 35,089 | 9,938 | 33,829 |
| 运行形态 | 前台 TUI | 前台 TUI | 前台 TUI | 前台 TUI | 前台 TUI / Web / REST API / C-S |
| 远程监控 | SSH 逐台登录 | SSH 逐台登录 | SSH 逐台登录 | SSH 逐台登录 | 原生客户端-服务器模式 |
| 告警/导出/集成 | 无 | 无 | 无(有配置导出主题) | 无 | 有(告警、导出、InfluxDB/ES 等) |
| GPU 监控 | 内置(NVIDIA/AMD) | 无 | 内置 | 无 | 有限(需传感器支持) |
| 自定义布局 | TOML 全定制 | 无(固定视图) | 有限(预设视图切换) | 无(固定视图) | 无(固定视图) |
| 配置文件 | TOML | htoprc(二进制) | 主题+开关 conf | 无 | INI |
| 维护状态 | 活跃(2026-10 仍有 Nightly) | 活跃 | 活跃 | 停滞(长期停在 1.1.5) | 活跃 |
选型建议(如果…则…):
- 如果只要「比 top 好用的进程查看器」、追求最小依赖与最低资源占用 → htop:C 编写、几百年成熟稳定,无图表诉求时最省心。
- 如果要「一屏炫酷仪表盘 + 强磁盘 I/O 明细」且单机使用 → btop:视觉呈现与内存/CPU/磁盘图表细致度是五者最强,35k+ 星的社区规模也最大。
- 如果需要 Web 页面、REST API、告警或多机集中监控 → glances:五者中唯一提供非 TUI 形态与输出集成的工具(详见站内《glances 介绍与选型指南》)。
- 如果看重「图形化 + 高度定制布局 + 跨平台一致体验」且是交互式人看场景 → bottom:TOML 自定义布局能力五者独一档,Rust 单二进制部署最轻,且维护活跃。
- 如果正在用 gtop:建议迁移。gtop(aksakalli/gtop)长期停留在 1.1.5 版本,依赖的 Node.js 老库存在安全维护风险;bottom 在功能(GPU/电池/树模式/自定义布局)、性能(Rust 编译型语言 vs Node.js 解释执行)与维护活跃度上全面占优,且命令更短(btm)。迁移成本低:两者定位一致,装上 btm 即可平替(详见站内《gtop 介绍与选型指南》)。
💡 技术拓展:「终端监控工具」之外还有一类「时序监控栈」(Prometheus + node_exporter + Grafana 等),两者是互补而非替代关系——终端工具解决「人 SSH 上去现场看」,时序栈解决「7×24 自动采集、存储、告警、回看」。若你的诉求是后者,请直接上监控栈,终端工具再强也覆盖不了无人值守场景。
八、参考链接
- bottom 官方仓库:https://github.com/ClementTsang/bottom
- bottom Releases 页(0.14.9):https://github.com/ClementTsang/bottom/releases/tag/0.14.9
- bottom 官方文档:https://clementtsang.github.io/bottom-stable/
- 官方支持平台说明:https://github.com/ClementTsang/bottom/blob/main/docs/content/support/official.md
- 站内同族文档:《glances 介绍与选型指南》、《gtop 介绍与选型指南》
- 站内本组件系列:《Ubuntu 22.04 安装 bottom 0.14.9 指南》、《bottom 0.14.9 配置参数详解》、《bottom 0.14.9 常用 CLI 命令与工具详解》