bottom 介绍与选型指南

bottom(ClementTsang/bottom,命令 btm)是 Rust 编写的跨平台终端系统监控工具,本篇溯源其架构、功能与 htop/btop/gtop/glances 的量化选型对比,附场景建议。

bottom系统监控Linux命令行2026/10/23

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.mdmacOS(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 中的自述来说,它是一个「可定制的、跨平台的、图形化的终端进程/系统监视器」。这一定位有三个关键词:

  1. 跨平台:macOS、Linux、Windows 全部官方支持(另有社区构建覆盖 FreeBSD、Android 等),同一份配置文件(TOML 格式)与同一套快捷键在三大平台行为一致,这对混合操作系统环境的运维人员很友好。
  2. 图形化(TUI):以字符画布绘制折线图、柱状图与表格,CPU/内存/网络等指标默认以时序图形式滚动展示,而不是 htop 式的纯文本表格。
  3. 可定制:从布局(每个组件的位置与占比)、列(进程表/磁盘表显示哪些列)、配色(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 的架构可以用「单二进制、单进程、零依赖外部服务」概括,这与它「本机监控工具」的定位一致:

  1. 采集层:启动后按刷新率(默认 1s,--rate 可调)直接读取本机内核接口——Linux 上读取 /proc、/sys 文件系统获取 CPU、内存、磁盘、网络、进程数据;温度来自传感器接口;GPU 数据通过 NVIDIA NVML 与 AMD 接口获取(--disable_gpu 可关闭)。Windows/macOS 各走平台原生 API。
  2. 存储层:采集到的时序数据保存在进程内存中,默认保留最近 10 分钟(--retention 可调大,如 1h),不落盘、不写数据库。因此 bottom 退出即历史清零,也没有「昨天/上周」的回看能力。
  3. 呈现层:基于 Rust TUI 生态的 crossterm(终端事件与渲染抽象)+ ratatui(组件与布局库,0.14.x 实际编译依赖 ratatui 0.30.x,可在 cargo install bottom 编译日志中看到)绘制界面。界面由组件(widget)组成,默认布局分三行:第一行 CPU 图,第二行内存图 + 温度表 + 磁盘表,第三行网络图 + 进程表;布局可整体替换。
  4. 交互层:全键盘操作(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 的场景:

  1. 日常单机巡检:SSH 登上服务器后想一眼看清「谁在吃 CPU、磁盘写没写爆、网络有没有异常流量」,btm 一屏给出六组件视图,比 top 信息密度高、比 htop 多了图表与磁盘/网络维度。
  2. 交互式排障:进程搜索支持正则与整词匹配、可按任意列排序、可当场 kill,树模式能定位「父进程-子进程」关系,适合排查 fork 风暴、僵尸进程树。
  3. 混合操作系统团队:同一二进制与同一配置文件在 Linux/macOS/Windows 行为一致,跨平台运维可共用一份 bottom.toml。
  4. 低依赖环境:静态编译的 Rust 单二进制(tar.gz 版、musl 版无 glibc 依赖),丢进老系统或最小化系统环境即可运行。

不适合选 bottom 的场景(限制):

  1. 需要无人值守监控/告警:无守护进程、无 Web UI、无 API、无数据导出、无告警通知,这类需求选 glances(Web/REST API 模式)或 Prometheus + Grafana。
  2. 需要历史回看:内存中仅保留默认 10 分钟时序(--retention 上限受内存制约),没有跨会话持久化。
  3. 需要远程集中监控多台机器:btm 没有 C/S 模式,逐台 SSH 是唯一用法;要一屏看多机应选 glances C/S 模式或 node_exporter 集群方案。
  4. 极老的终端:图形模式依赖盲文字体与足够终端尺寸,老旧串口终端建议用 -b 基础模式或直接用 htop。

七、同类选型对比

下表对五款常被拿来对比的终端/系统监控工具做量化对比。星数均取自各自 GitHub 仓库页 HTML(2026-10-23 实查);版本为各自 Releases 最新稳定版(2026-10-23 实查,glances/gtop 详见站内对应专栏)。

维度bottom (btm)htopbtopgtopglances
编写语言RustCC++Node.jsPython
最新稳定版(2026-10-23)0.14.9(2026-08-27)3.5.3v1.4.71.1.54.5.8
Stars14,1168,41035,0899,93833,829
运行形态前台 TUI前台 TUI前台 TUI前台 TUI前台 TUI / Web / REST API / C-S
远程监控SSH 逐台登录SSH 逐台登录SSH 逐台登录SSH 逐台登录原生客户端-服务器模式
告警/导出/集成无无无(有配置导出主题)无有(告警、导出、InfluxDB/ES 等)
GPU 监控内置(NVIDIA/AMD)无内置无有限(需传感器支持)
自定义布局TOML 全定制无(固定视图)有限(预设视图切换)无(固定视图)无(固定视图)
配置文件TOMLhtoprc(二进制)主题+开关 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 自动采集、存储、告警、回看」。若你的诉求是后者,请直接上监控栈,终端工具再强也覆盖不了无人值守场景。

八、参考链接

  1. bottom 官方仓库:https://github.com/ClementTsang/bottom
  2. bottom Releases 页(0.14.9):https://github.com/ClementTsang/bottom/releases/tag/0.14.9
  3. bottom 官方文档:https://clementtsang.github.io/bottom-stable/
  4. 官方支持平台说明:https://github.com/ClementTsang/bottom/blob/main/docs/content/support/official.md
  5. 站内同族文档:《glances 介绍与选型指南》、《gtop 介绍与选型指南》
  6. 站内本组件系列:《Ubuntu 22.04 安装 bottom 0.14.9 指南》、《bottom 0.14.9 配置参数详解》、《bottom 0.14.9 常用 CLI 命令与工具详解》