bottom 0.14.9 常用 CLI 命令与工具详解
bottom 0.14.9 命令行全解:btm 九组启动参数全量实测(默认值/边界报错/退出码)、键盘鼠标交互键位、进程搜索语法、SSH 远程使用实测与无头环境能力边界。
bottom 0.14.9 常用 CLI 命令与工具详解
目标:讲清终端监控 bottom(命令
btm)0.14.9 的命令行用法——全量启动参数(含默认值与边界行为实测)、键盘/鼠标交互键位、SSH 远程服务器使用方式,并明确其无头环境与自动化场景的能力边界。所有命令与回显均在 Ubuntu 22.04.5 LTS(x86_64,bottom 0.14.9)环境实测通过。
一、环境信息
- 操作系统:Ubuntu 22.04.5 LTS(x86_64),内核 6.8.0-138-generic,12 核 / 32 GB 内存(
free -m实测 total 32050 MB) - 软件版本:bottom 0.14.9(
btm -V实测),安装方式为官方 deb 包(安装过程见《Ubuntu 22.04 安装 bottom 0.14.9 指南》) - 键位佐证来源:应用内帮助菜单实测渲染(按
?打开)+ 官方文档 usage/general-usage.md、usage/widgets/process.md(2026-10-23 拉取核对) - 远程实测拓扑:两台同网段 Ubuntu 22.04 主机,被监控端
bottom-remote(安装 openssh-server + bottom 0.14.9),监控端通过ssh远程运行 btm
二、工具概览
bottom 是「单命令」工具:所有功能都通过 btm [OPTIONS] 一个入口 + TUI 内键盘交互完成,没有子命令体系(区别于 systemctl 类多子命令工具),也没有独立的辅助命令行工具。
btm -V 实测:
bottom 0.14.9
帮助命令有轻量与详细两档,实测 -h 输出 95 行紧凑参数表,--help 输出 238 行含逐参数详细说明(同一段帮助头):
btm -h # 紧凑参数表(实测 95 行)
btm --help # 详细帮助(实测 238 行,含每参数说明与示例)
两者均正常返回,退出码 0。--help 帮助头实测:
bottom 0.14.9
Clement Tsang <cjhtsang@uwaterloo.ca>
A customizable cross-platform graphical process/system monitor for the terminal. Supports Linux,
macOS, and Windows.
Usage: btm [OPTIONS]
退出码约定(实测归纳),可用于脚本判断:
| 退出码 | 含义 | 实测触发 |
|---|---|---|
| 0 | 正常(含 -V/-h/正常退出) | btm -V、TUI 中按 q 退出 |
| 1 | 运行期错误(参数值越界/配置非法/无终端) | btm -t 10s、btm --rate 100ms、无 TTY 运行 |
| 2 | 命令行参数本身不合法 | btm -x、btm --theme bogus |
三、前置条件
- 已安装 bottom 0.14.9(见《Ubuntu 22.04 安装 bottom 0.14.9 指南》)。
- 在真实终端(TTY)中运行——cron/CI 等无终端环境会直接报错(实测见第八章)。
- 追加的配置联动能力:熟悉
~/.config/bottom/bottom.toml的段结构(逐参数详解见《bottom 0.14.9 配置参数详解》)。
四、btm 启动参数详解
btm --help 将参数分为九组。以下按组给出全量参数表,默认值列均来自详细帮助/官方配置注释,标注「实测」的条目附实测证据。
4.1 General(通用行为)
| 参数 | 默认值 | 作用 |
|---|---|---|
-b, --basic | off | 基础模式:隐藏图形曲线,htop 风格条形布局 |
-C, --config_location <PATH> | ~/.config/bottom/bottom.toml | 指定配置文件路径;文件/父目录不存在时自动创建(实测 -C /root/newdir/sub/bottom.toml 自动建出两级目录并生成默认配置) |
-t, --default_time_value <TIME> | 60s(最小 30s) | 图表默认时间窗口。实测 -t 10s 报错:Error: Argument error: '--default_time_value' must be greater than 30s(退出码 1) |
-r, --rate <TIME> | 1s(最小 250ms) | 刷新率。实测 --rate 100ms 报错:Error: Argument error: '--rate' must be greater than 250ms(退出码 1) |
-d, --time_delta <TIME> | 15s(最小 1s) | 每次缩放的时间步长 |
--retention <TIME> | 10m(最小 1 分钟) | 内存中时序数据保留时长 |
--default_widget_type <WIDGET> | proc(默认布局) | 启动默认选中组件;可选 cpu/mem/net/network/proc/process/processes/temp/temperature/disk/batt/battery。实测非法值 foo 报错(退出码 2)并列出全部可选值 |
--default_widget_count <N> | 1 | 同类组件第 N 个设为默认(配合自定义布局中的重复组件) |
-e, --expanded | off | 启动即展开默认组件(basic 模式下无效) |
-m, --dot_marker | off | 图表用点状标记替代盲文点阵 |
--autohide_time | off | 缩放后短暂显示时间刻度再隐藏 |
--hide_time | off | 完全隐藏时间刻度 |
--show_table_scroll_position | off | 表格标题显示滚动位置 |
--disable_click | off | 禁用鼠标点击 |
--disable_keys | off | 禁用键盘快捷键(含退出键,慎用) |
4.2 Process(进程组件)
| 参数 | 默认值 | 作用 |
|---|---|---|
-S, --case_sensitive | off | 搜索默认大小写敏感 |
-W, --whole_word | off | 搜索默认整词匹配 |
-R, --regex | off | 搜索默认启用正则 |
-g, --group_processes | off | 默认按进程名分组(tree 模式下无效) |
-T, --tree | off | 默认树模式展示进程父子关系 |
--tree_collapse | off | 树模式默认折叠 |
-u, --current_usage | off | 进程 CPU% 按当前用量而非总量计 |
-n, --unnormalized_cpu | off | CPU% 不按核数归一化 |
--process_memory_as_value | off | 进程内存按数值而非百分比显示 |
--process_command | off | 显示完整命令行而非进程名 |
--disable_advanced_kill | off | kill 只保留简单确认框(Unix 下默认可选信号) |
--read_only | off | 只读模式:禁用 kill 等一切影响系统的操作 |
--hide_k_threads | off | 隐藏内核线程 |
--get_threads | off | 采集线程信息 |
--process_default_sort <COLUMN> | 配置或 CPU% | 启动排序列,覆盖配置文件的 default_sort |
💡 说明:
--read_only适合把 btm 交给他人临时查看的场合(救火时互相看屏),避免误按dd杀进程。
4.3 Temperature(温度单位,三选一)
| 参数 | 默认值 | 作用 |
|---|---|---|
-c, --celsius | 默认 | 摄氏度 |
-f, --fahrenheit | off | 华氏度 |
-k, --kelvin | off | 开尔文 |
4.4 CPU
| 参数 | 默认值 | 作用 |
|---|---|---|
-a, --hide_avg_cpu | off | 隐藏 AVG 均值条目 |
-l, --cpu_left_legend | off | CPU 图例放左侧 |
--default_cpu_entry <ENTRY> | all | 默认选中 all(逐核)/avg(均值) |
4.5 Memory
| 参数 | 默认值 | 作用 |
|---|---|---|
--enable_cache_memory | off | 显示缓存/缓冲内存曲线(仅 Linux) |
--free_arc | off | 扣减可回收 ZFS ARC 内存(需构建特性) |
--memory_legend <POSITION> | top-right | 内存图例位置;可选 none/top-left/top/top-right/left/right/bottom-left/bottom/bottom-right |
--short_gpu_names | off | GPU 条目用短名 |
4.6 Network
| 参数 | 默认值 | 作用 |
|---|---|---|
--network_use_bytes | off(默认 bits) | 速率按字节而非比特显示 |
--network_use_binary_prefix | off(默认十进制) | 二进制前缀(Kib/Mib) |
--network_use_log | off | 对数刻度 |
--network_start_zeroed | off | All 累计值从 btm 启动起算(默认自开机起算) |
--show_packets | off | 显示包速率与平均包大小 |
--network_legend <POSITION> | top-right | 网络图例位置(九宫格同上) |
--use_old_network_legend | 已废弃 | 旧图例,官方注明未测试可能损坏,勿用 |
4.7 Battery
| 参数 | 默认值 | 作用 |
|---|---|---|
--battery | off | 显示电池组件(有电池的机器;自定义布局需显式声明 batt 组件) |
4.8 Style
| 参数 | 默认值 | 作用 |
|---|---|---|
--theme <SCHEME> | default | 内置主题六选一:default、default-light、gruvbox、gruvbox-light、nord、nord-light。实测 --theme bogus 报错(退出码 2):error: invalid value 'bogus' for '--theme <SCHEME>' 并列出全部可选值;--theme nord 实测正常启动渲染 |
4.9 Other
| 参数 | 作用 |
|---|---|
-h, --help | 紧凑帮助(实测 95 行,退出码 0) |
-V, --version | 版本输出 bottom 0.14.9 |
参数组合实测:btm -b -T(基础模式 + 树模式)实测可同时启用、正常渲染(帧 12,586 字节,无冲突报错)。
五、键盘与鼠标交互
5.1 应用内帮助菜单(?)
运行中按 ? 打开帮助菜单。实测渲染(按 ? 后抓帧,ANSI 剥离照抄):
┌ Help ────────────────────────────────────────────────────────────────── Esc to close ┐
│Scroll to browse or press the number key to go to the corresponding help menu section:│
│1 - General │
│2 - CPU widget │
│3 - Process widget │
│4 - Process search widget │
│5 - Process sort widget │
│6 - Temperature widget │
│7 - Disk widget │
│8 - Battery widget │
│9 - Basic memory widget │
│Press 'Ctrl-f' or '/' to search for a keyword in the help text. │
帮助菜单分 9 个分区,数字键直达,Ctrl-f 或 / 可在帮助文本内搜索。
5.2 全局键位表(分区 1 - General,实测渲染 + 官方文档核对)
| 按键 | 动作 |
|---|---|
q / Q / Ctrl-c | 退出 |
esc | 关闭弹窗/搜索/退出展开模式 |
Ctrl-r | 重置显示与已采集数据 |
f | 冻结/恢复刷新 |
? | 打开帮助菜单 |
e | 展开/收起当前选中组件(全屏单组件) |
Shift+方向 或 Ctrl+方向 或 H/J/K/S(大写) | 在组件间移动焦点(左右上下) |
h/j/k/l(小写)或方向键 | 组件内移动 |
gg / home、G / end | 跳到表首/表尾 |
page-up / page-down | 翻页滚动 |
Ctrl-u / Ctrl-d | 半页滚动 |
鼠标:左键点击选中组件;进程表头点击可排序(见 5.4)。
5.3 组件间导航与展开的典型工作流
- 启动后默认焦点在进程表(
default_widget_type默认 proc); Shift+←/→/↑/↓把焦点切到目标组件(如 CPU 图);e全屏展开该组件细看曲线,再按e或esc收回;f冻结画面后慢慢核对数值,再按f恢复;- 怀疑数据异常按
Ctrl-r清空重采。
5.4 进程组件专属键位(官方 process.md 核对)
| 按键 | 动作 |
|---|---|
/ 或 Ctrl-f | 打开/关闭搜索栏(esc 关闭但保留过滤) |
s 或 F6 | 打开排序菜单(方向键选择排序列) |
tab | 同名进程分组切换(PID 列变为组内数量) |
t 或 F5 | 树模式切换(父子进程关系;-/+/左右键/空格 折叠展开) |
dd 或 F9 | 终止选中进程(Unix 下高级菜单可选 SIGKILL/SIGTERM 等信号) |
P | 显示完整命令行替代进程名 |
I(大写) | 反转图表方向 |
搜索栏内编辑键:Ctrl-a/Ctrl-e 跳到查询首/尾,Ctrl-u 清空查询。
5.5 进程搜索语法(进阶)
搜索支持列条件关键字与逻辑组合(关键字大小写不敏感;与进程名撞车时给词加引号如 "cpu"):
| 关键字 | 示例 | 匹配列 |
|---|---|---|
cpu / cpu% | cpu > 0.5 | CPU 列,支持比较运算符 |
mem / mem% | mem < 0.5 | 内存百分比 |
memb | memb > 1000 b | 内存字节数 |
read / r/s / rps | read = 1 mb | 每秒读 |
write / w/s / wps | write >= 1 kb | 每秒写 |
tread / t.read | tread <= 1024 gb | 累计读 |
twrite / t.write | twrite > 1024 tb | 累计写 |
gmem / gmem% / gpu% | gpu% > 0 | GPU 内存/利用率(需 GPU 支持) |
() 组合 | (cpu > 10 AND mem < 0.5) OR name | 条件分组 |
组合运算符:AND、OR、NOT(官方文档 usage/widgets/process.md,2026-10-23 核对)。例如排查「CPU 高但内存小」的进程:cpu > 10 AND mem < 0.5。
六、配置文件联动(-C)
命令行参数与配置文件是同一套能力的两个入口,优先级为命令行 > 配置文件。三件常配合的事:
- 指定/初始化配置:
btm -C /etc/bottom/bottom.toml——路径不存在时自动创建父目录与默认配置(实测见 4.1 表)。 - 临时覆盖:配置里写了
basic = true时,临时想看图形模式可btm -b=false(或改回配置)——反向同理,命令行显式给的值覆盖配置。 - 验证配置生效:改完配置先
btm -C <配置>启动观察渲染(布局/列/过滤变化立即可见);配置错误时 btm 会给出带键名的报错(实测三类错误回显见《bottom 0.14.9 配置参数详解》第三章)。
七、远程服务器使用(SSH 场景实测)
bottom 没有 C/S 监控模式(对比 glances 的 client-server 模式),远程监控的标准用法是 SSH 登录目标机后在其会话里运行 btm——btm 的 TUI 经 SSH 终端透传,交互与本地一致。本节在两台 Ubuntu 22.04 主机间实测。
被监控端(bottom-remote)准备:安装 openssh-server 并启动 sshd,安装 bottom 0.14.9(过程见《Ubuntu 22.04 安装 bottom 0.14.9 指南》)。演示账号 root / q1w2e3r4(sshd_config 中 PermitRootLogin yes)。
监控端发起远程监控(-t 强制分配 TTY 是关键,否则 btm 报无终端错误):
sshpass -p q1w2e3r4 ssh -tt -o StrictHostKeyChecking=no root@bottom-remote btm
实测:远程 btm 正常渲染完整仪表盘,进程表显示的是远端主机的进程(btm 自身 PID 3540、init sleep PID 1,与本机进程号不同,证明数据来自远端):
│PID(p) Name(n) CPU%(c)▼ Mem%(m) R/s W/s T.Read T.Write User State │
│3540 btm 0.1% 0.0% 0B/s 0B/s 0B 8KB root Sleeping │
│1 sleep 0.0% 0.0% 0B/s 0B/s 0B 0B root Sleeping │
交互透传实测:远程会话中按 ? 同样打开帮助菜单(渲染帧与本地一致),q 正常退出并回到本地 shell。
⚠️ 注意:
ssh host btm(不带-tt)不为远程命令分配 TTY,btm 会报Error: No such device or address (os error 6)退出——必须-tt或先登录再运行。sshpass 需监控端自行安装(apt install sshpass);生产环境建议改用 SSH 密钥认证,避免命令行明文密码。
多台服务器的日常巡检建议:在 ~/.ssh/config 里为主机配别名,巡检时 ssh 别名 btm 逐台查看;需要一屏同时看多台时应选 glances C/S 模式或 Prometheus 体系(选型分析见《bottom 介绍与选型指南》第七章)。
八、无头环境与自动化边界
bottom 定位「人看着的仪表盘」,以下边界均实测确认:
- 无终端不可运行:cron/CI/无
-t的 ssh 远程命令中运行 btm,实测警告后退出(退出码 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)
- 无数据导出/日志能力:btm 不提供任何把采集数据导出文件、写日志或对接外部的命令行开关(
--help全量参数核对,2026-10-23)。需要无人值守采集、阈值告警、历史存储的场景,直接选 glances(Web/REST API/导出)或 Prometheus + node_exporter,不要试图用脚本「录制」btm 的 TUI 输出。 - 唯一的「脚本化」用法是启动参数:
btm -b(轻量渲染)配合自定义配置,可以降低它在老终端/低带宽 SSH 链路里的渲染压力,但仍需人交互查看。
九、注意事项
--disable_keys会连退出键一起禁用(官方帮助明确说明),只能靠杀进程退出,慎用。--retention调大(如 2h)会明显增加 btm 自身内存占用,低配机器先观察再定。- GPU 相关参数在无 NVIDIA/AMD GPU 的机器上无效果;温度组件在无传感器的虚拟机里为空(No data 属正常)。
- kill 操作(
dd/F9)对 root 会话无额外确认门槛,公共机器上建议固定用--read_only启动。 - 参数值的时间写法支持人类可读形式(
60s/10m/1h)与毫秒整数两种,-t/-r/-d/--retention通用。
十、常见问题
Q1:btm 报 unexpected argument '-x' found?
拼错了参数或使用了本版本不存在的 flag。实测退出码 2,并回显 Usage 提示。先跑 btm -h 对照参数表。
Q2:--theme 报 invalid value?
主题只有六个合法值(default、default-light、gruvbox、gruvbox-light、nord、nord-light),实测报错会列出全部可选值,照抄即可。
Q3:SSH 远程运行 btm 报 os error 6?
SSH 命令未分配 TTY。用 ssh -tt(实测通过),或先 ssh 登录再运行 btm(见第七章)。
Q4:按 q 退不掉?
多半是 --disable_keys 或配置里 disable_keys = true 生效了。换终端窗口 killall btm 后修正配置(官方帮助明确 disable_keys 包含退出快捷键)。
Q5:冻结(f)之后数据不动了?
那是冻结特性在生效(防止刷新打断读数),再按一次 f 恢复;要彻底重置数据按 Ctrl-r。
十一、参考链接
- 官方命令行参数文档:https://clementtsang.github.io/bottom-stable/configuration/command-line-options/
- 官方通用键位文档:https://github.com/ClementTsang/bottom/blob/main/docs/content/usage/general-usage.md
- 官方进程组件文档(搜索/排序/kill 键位与语法):https://github.com/ClementTsang/bottom/blob/main/docs/content/usage/widgets/process.md
- 站内本组件系列:《bottom 介绍与选型指南》、《Ubuntu 22.04 安装 bottom 0.14.9 指南》、《bottom 0.14.9 配置参数详解》