bottom 0.14.9 配置参数详解

bottom 0.14.9 配置文件全解析:bottom.toml 十一段配置(flags/processes/disk 过滤/styles/row 布局等)逐项含义与默认值,布局与过滤实测生效,附三份实测可用的场景配置模板。

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

bottom 0.14.9 配置参数详解

目标:讲清终端监控 bottom(命令 btm)0.14.9 的配置文件体系——配置路径与优先级、[flags] 通用开关、[processes]/[cpu]/[disk]/[disk_io_graph]/[temperature]/[temperature_graph]/[memory_graph]/[network_graph]/[styles]/[[row]] 布局共 11 个配置段的全量参数含义与默认值,并给出三份按场景验证可用的生产配置模板。全部参数说明对照官方默认配置文件(首跑自动生成的 511 行 bottom.toml)与官方文档逐项核对,关键参数均在本机实测生效。

一、环境信息

  • 操作系统:Ubuntu 22.04.5 LTS(x86_64),内核 6.8.0-138-generic
  • 软件版本:bottom 0.14.9(官方最新稳定版,2026-08-27 发布;2026-10-23 经 GitHub Releases 实查确认)
  • 配置文件参照:btm -C /root/.config/bottom/bottom.toml 首跑自动生成的默认配置(实测 511 行 / 15946 字节)
  • 佐证来源:官方文档 configuration/config-file/* 页面(flags、layout、processes、disk-table 等,2026-10-23 拉取核对)
  • 实测手段:非交互 pty 终端内启动 btm -C <配置> 抓取渲染帧,核对布局/列名/排序标记是否按配置变化;报错路径逐条实测退出码与回显

二、前置条件

按本篇操作前,请先确认:

  1. 已安装 bottom 0.14.9 并能运行 btm -V(安装过程见《Ubuntu 22.04 安装 bottom 0.14.9 指南》)。
  2. 操作在真实终端(TTY)中进行:btm 是 TUI 程序,无终端会直接报错退出(实测 Error: No such device or address (os error 6),退出码 1)。
  3. 理解配置生效机制:修改配置文件保存后重启 btm 才生效(bottom 无运行时热加载命令)。

三、参数查看与修改方式

3.1 配置文件位置与优先级

bottom 的配置是单个 TOML 文件,查找顺序(Linux,官方文档 config-file/index.md 实查):

优先级路径说明
1-C <PATH> 显式指定不存在时会在该路径自动生成默认配置
2$HOME/.config/bottom/bottom.tomlLinux 默认
3$XDG_CONFIG_HOME/bottom/bottom.tomlXDG 变量设置时

生效优先级:命令行 flag > 配置文件 [flags] 段。官方默认配置注释原文:「Flags explicitly added when running (ie: btm -a) will override this config file if an option is also set here.」

3.2 首跑自动生成默认配置

若配置文件不存在,bottom 会自动创建一份全量注释的默认配置(所有键被 # 注释,值即默认值):

btm -C /root/.config/bottom/bottom.toml

(btm 会启动 TUI,按 q 退出后查看文件)

ls -lh /root/.config/bottom/bottom.toml

实测回显:

-rw-r--r-- 1 root root 15946 Oct 23 03:18 bottom.toml
wc -l /root/.config/bottom/bottom.toml

实测回显:

511 /root/.config/bottom/bottom.toml

💡 说明:这份自动生成的文件就是最权威的「参数清单」——11 个配置段全量列出并带注释。修改时去掉对应行的 # 注释即可覆盖默认值。

3.3 配置校验行为(三类实测)

bottom 启动时解析配置,错误处理分三类,均实测:

① TOML 语法错误——报解析位置并拒绝启动(实测退出码 1):

Error: TOML parse error at line 3, column 14
  |
3 | broken_key =

② 键值非法——明确指出哪个键错:

Error: Configuration file error: 'rate' was set with an invalid value, please update it in your config file.

③ 未知键——静默忽略:实测配置文件写入 [flags] no_such_option = true 后 btm 正常启动渲染(不报错不告警)。这意味着拼写错误的键不会被发现,改配置后务必用渲染效果验证。

3.4 JSON Schema 支持

配置文件支持 JSON Schema(官方文档 config-file/index.md 实查),IDE/编辑器(VS Code 的 Even Better TOML 插件等)配置 schema 后可获得键名补全与校验,可有效规避上面第 ③ 类「未知键静默忽略」陷阱。

四、参数总览

默认配置文件共含 11 个配置段,总览如下(段名 → 作用 → 核心键):

配置段作用核心参数
[flags]命令行 flag 的配置文件等价物rate、default_time_value、basic、retention 等 40+ 键
[processes]进程表行为与列columns、default_sort、sort_order、regex 等
[cpu]CPU 组件default、show_decimal、left_legend、hide_avg_cpu
[disk]磁盘表columns、default_sort、use_binary_prefix、include_unmounted、name_filter、mount_filter
[disk_io_graph]磁盘 I/O 图show_read、show_write、legend、use_log、legend_position、name_filter
[temperature]温度表default_sort、sort_order、sensor_filter
[temperature_graph]温度图legend_position、max_temp、sensor_filter
[memory_graph]内存图legend_position、cache_memory、free_arc、short_gpu_names
[network_graph]网络图show_packets、start_zeroed、interface_filter、use_bytes 等
[styles]主题与自定义配色theme + styles.cpu/memory/network/tables/graphs/widgets 等
[[row]]自定义布局ratio、type、default

💡 技术拓展:[flags] 段是 0.14.x 之前的「旧式扁平配置」,新版本把各组件参数拆进了独立段(如进程搜索行为从 [flags] regex 迁到 [processes] regex)。旧键目前仍兼容但标记为 Deprecated,新配置一律用新段。映射关系:hide_avg_cpu→cpu.hide_avg_cpu、current_usage/group_processes/case_sensitive/whole_word/regex/process_memory_as_value/tree/unnormalized_cpu/process_command/disable_advanced_kill/hide_k_threads/tree_collapse→processes.、cpu_left_legend→cpu.left_legend、enable_cache_memory/free_arc→memory_graph.、network_use_bytes/network_use_binary_prefix/network_use_log→network_graph.*、memory_legend/network_legend→memory_graph/network_graph.legend_position、average_cpu_row→cpu.basic_average_cpu_row。

五、核心参数分类详解

5.1 [flags]:通用开关(等价命令行参数)

本段键与命令行 flag 一一对应(完整 flag 清单与实测见《bottom 0.14.9 常用 CLI 命令与工具详解》),此处列最常用键:

键类型/默认值作用
rate人类时间串或毫秒数,默认 "1s"刷新率,最小 250ms(实测 btm --rate 100ms 报 must be greater than 250ms)
default_time_value默认 "60s",最小 30s图表默认时间窗口
time_delta默认 15000(15s),最小 1s缩放一次的时间步长
retention默认 "10m",最小 1 分钟内存中时序数据保留时长,越大占内存越多
basic布尔,默认 false基础模式(htop 风格,无图形曲线)
temperature_type默认 "c",可选 k/f/c 及全称温度单位
default_widget_type / default_widget_count默认 "proc" / 1启动时默认选中的组件
expanded布尔,默认 false启动即展开默认组件
hide_time / autohide_time布尔,默认 false隐藏/自动隐藏图表时间刻度
dot_marker布尔,默认 false用点状标记替代盲文点阵
disable_click / disable_keys布尔,默认 false禁用鼠标点击/键盘快捷键(disable_keys 连退出键也禁用)
read_only布尔,默认 false只读模式,禁一切影响系统操作(kill 等)
disable_gpu布尔,默认 false关闭 NVIDIA/AMD GPU 数据采集
battery布尔,默认 false显示电池组件
table_gap默认 "space",可选 none/space/line表头与数据行的间隔样式
show_table_scroll_position布尔,默认 false表格标题显示滚动位置
show_table_scroll_bar布尔,默认 false表格右侧滚动条
use_old_network_legend已废弃旧网络图例(不测试、可能损坏,勿用)

整段生效实测:写入如下配置后启动,实测渲染帧直接呈现基础模式(与命令行 btm -b 相同布局——AVG/逐核条形、RAM/SWP 条形、Disks/Temperature 第二行):

[flags]
basic = true
rate = "2s"
retention = "30m"

[processes]
default_sort = "mem"

实测渲染帧关键字样(ANSI 剥离后照抄):

 AVG[||||                               5%]  3  [||                                  5%] ...
 RAM[                                                                     0.0GiB/31.3GiB]  RX: 0.0/s
 SWP[                                                                      0.0GiB/2.0GiB ]  TX: 0.0/s
 ◄ Disks                                                                                                                                                              Temperature ►

⚠️ 注意:rate/retention 属「行为类」配置,静态帧无法肉眼核对,其生效以「配置加载无报错 + 官方语义」为准;basic/排序类「呈现类」配置均有渲染帧实证。

5.2 [processes]:进程组件

键类型/默认值作用
columns字符串数组进程表显示的列与顺序;可选列:PID、Name、CPU%、Mem%、Virt、R/s、W/s、T.Read、T.Write、User、State、Time、GMem%、GPU%、Nice、Priority(GPU 列需构建特性)
default_sort列名字符串,默认 CPU%启动排序列;填了未显示的列则回退内置默认
sort_order"Ascending" / "Descending"排序方向;未设则按数据类型取合理默认(CPU/内存降序、名称升序)
get_threads布尔,默认 false采集进程线程信息
hide_k_threads布尔,默认 false隐藏内核线程(仅 Linux)
tree_collapse布尔,默认 false树模式默认折叠
process_command布尔,默认 false显示完整命令行而非进程名
disable_advanced_kill布尔,默认 false禁用高级 kill 对话框(仅 Linux/macOS/FreeBSD)
default_memory_value布尔,默认 false内存按数值而非百分比显示
default_grouped布尔,默认 false同名进程分组(tree 模式下无效)
regex / case_sensitive / whole_word布尔,默认 false搜索默认开正则/大小写敏感/整词匹配
default_tree布尔,默认 false默认树模式
current_usage布尔,默认 falseCPU% 按当前用量而非总量计算
unnormalized_cpu布尔,默认 falseCPU% 不按核数归一化

default_sort 生效实测:配置 default_sort = "mem" 后启动,进程表头实测出现降序标记(按内存排序):

│PID(p)         Name(n)         CPU%(c)         Mem%(m)▼       R/s            W/s            ...

columns 生效实测:配置 columns = ["PID", "Name", "CPU%", "User"] 后,进程表头实测只显示这四列:

│PID(p)                                       Name(n)                                       CPU%(c)▼                                     User                                      │
│1                                            sleep                                         0.0%                                         root                                      │

5.3 [cpu]:CPU 组件

键类型/默认值作用
default默认 "all",可选 "average"/"avg"默认选中的 CPU 条目(全部核 / 均值)
show_decimal布尔,默认 falseCPU 使用率显示小数位
left_legend布尔,默认 false图例放左侧(替代旧 flags.cpu_left_legend)
hide_avg_cpu布尔,默认 false隐藏 AVG 均值条目(等价命令行 -a)
basic_average_cpu_row布尔,默认 false基础模式下 AVG 单独占一行

5.4 [disk] 与 [disk_io_graph]:磁盘表与 I/O 图

[disk] 键表:

键类型/默认值作用
columns默认 ["Disk", "Mount", "Used", "Free", "Total", "Used%", "R/s", "W/s"]磁盘表列;另有 Free% 可选
default_sort默认 "Disk"启动排序列
sort_order默认 "Ascending"排序方向
use_binary_prefix布尔,默认 false容量用二进制前缀(KiB/MiB/GiB)而非十进制(KB/MB/GB)
include_unmounted布尔,默认 false,仅 Linux显示未挂载块设备(Used/Free 列显示 N/A;loop*/ram*/zram* 伪设备自动跳过)
name_filter / mount_filter过滤器对象按设备名/挂载点过滤条目,结构见下

过滤器结构(name_filter 与 mount_filter 同构):

[disk.mount_filter]
is_list_ignored = true          # true=忽略命中项(黑名单),false=仅显示命中项(白名单)
list = ["/etc/hostname", "/etc/hosts"]
regex = false                   # list 项是否按正则解析
case_sensitive = false          # 是否大小写敏感
whole_word = false              # 是否整词匹配

生效实测:默认磁盘表实测显示三条挂载(/etc/hostname、/etc/hosts、/etc/resolv.co…,本实验环境共享宿主块设备 /dev/sda3):

│Disk(d)▲  Mount(m)        Used(u)  Free(n)  Total(t)  Used%(p)  R/s(r)     │
│/dev/sda3 /etc/hostname   519GB    287GB    844GB     64.3%     0B/s       │
│/dev/sda3 /etc/hosts      519GB    287GB    844GB     64.3%     0B/s       │
│/dev/sda3 /etc/resolv.co… 519GB    287GB    844GB     64.3%     0B/s       │

配置 mount_filter(list 如上,is_list_ignored = true)后重启,实测 /etc/hostname 与 /etc/hosts 行被滤除,仅剩:

│Disk(d)▲  Mount(m)        Used(u)  Free(n)  Total(t)  Used%(p)  R/s(r)     │
│/dev/sda3 /etc/resolv.co… 519GB    287GB    844GB     64.3%     4KB/s      │

⚠️ 排障实录:想滤「挂载点」必须用 mount_filter,用 name_filter 填挂载点不会命中——name_filter 匹配的是设备名(如 /dev/sda3)。实测用 name_filter 过滤 /etc/hostname 时磁盘表毫无变化,改 mount_filter 后立即生效。

[disk_io_graph] 键表:

键类型/默认值作用
show_read / show_write布尔,默认 true是否画读/写速率线
legend默认 "disk",可选 "mount"图例按设备名还是挂载点标注
use_log布尔,默认 falseY 轴对数刻度
legend_position默认 "top-right",九宫格可选图例位置
include_unmounted布尔,默认 false含未挂载设备
name_filter过滤器对象同 [disk] 过滤器结构

5.5 [temperature] 与 [temperature_graph]:温度表与温度图

[temperature] 键表:

键类型/默认值作用
default_sort默认 "Sensor",可选 Temp/Temperature启动排序列
sort_order默认 "Ascending"排序方向
sensor_filter过滤器对象按传感器名过滤,结构同 [disk] 过滤器

[temperature_graph] 键表:

键类型/默认值作用
legend_position默认 "top-right",九宫格可选图例位置
max_temp浮点,默认未设(无上限)图表温度上限,超过的条目隐藏
sensor_filter过滤器对象同上

⚠️ 注意:温度数据依赖硬件传感器暴露。无传感器的虚拟机/云主机上温度组件显示 No data 属正常现象(本篇实测环境即如此),过滤与排序参数需在有机型传感器数据后才能观察效果。

5.6 [memory_graph]:内存图

键类型/默认值作用
legend_position默认 "top-right",九宫格可选图例位置
cache_memory布尔,默认 false,仅 Linux显示缓存/缓冲内存曲线
free_arc布尔,默认 false从内存占用中扣减可回收的 ZFS ARC(需构建特性)
short_gpu_names布尔,默认 falseGPU 内存条目用短名(GPU0/GPU1)

💡 说明:cache_memory = true 后内存图会多出一条 Cache 曲线,对「内存涨了但其实是页缓存」的判断很有用;swap 独立曲线始终显示。

5.7 [network_graph]:网络图

键类型/默认值作用
legend_position默认 "top-right",九宫格可选图例位置
use_bytes布尔,默认 false用字节(B)而非比特(b)显示速率
use_binary_prefix布尔,默认 false二进制前缀(Ki/Mi)替代十进制(k/M)
use_log布尔,默认 false对数刻度
show_packets布尔,默认 false显示包速率与平均包大小
start_zeroed布尔,默认 falseAll 累计值从启动起算(默认自开机起算)
interface_filter过滤器对象按网卡名过滤,默认示例 list = ["virbr0.*"]、regex=true

5.8 [styles]:主题与自定义配色

两级机制:内置主题(--theme 或 [styles] theme)与自定义配色(styles.* 子段)。

内置主题六选一(非法值实测报错,退出码 2,回显列出全部可选值):

error: invalid value 'bogus' for '--theme <SCHEME>'
  [possible values: default, default-light, gruvbox, gruvbox-light, nord, nord-light]

自定义配色子段(颜色值支持 colour/color 两种拼写,实测配置加载渲染正常):

子段可用键
[styles.cpu]all_entry_colour、avg_entry_colour、cpu_core_colours(数组逐核配色)
[styles.temp_graph]temp_graph_colour_styles(数组)
[styles.memory]ram_colour、cache_colour、swap_colour、arc_colour、gpu_colours
[styles.network]rx_colour、tx_colour、rx_total_colour、tx_total_colour
[styles.battery]high_battery_colour、medium_battery_colour、low_battery_colour
[styles.tables]headers = {colour = "...", bold = true}
[styles.graphs]graph_colour、legend_text
[styles.widgets]border_colour、selected_border_colour、widget_title、text、selected_text、disabled_text、bg_colour(默认关闭)、thread_text(仅 Linux)

加载实测:写入 [styles.cpu] all_entry_colour = "cyan" 与 [styles.tables] headers = {colour = "light blue", bold = true} 后启动,渲染正常无报错(帧 12,311 字节,含全部组件)。

优先级:命令行 --theme > 自定义配色 > [styles] theme(官方默认配置注释说明「This will have the lowest precedence if a custom colour palette is set, or overridden if the command-line flag for a built-in theme is set」)。

5.9 [[row]]:自定义布局

布局按「行 → 列 → 组件」三层 TOML 嵌套描述:[[row]] 是一行,[[row.child]] 是行内一列(或直接给组件),[[row.child.child]] 是列内再分的组件;每个层级可设 ratio(相对占比,默认 1),组件用 type 指定。支持的 type 全集:

type 值组件
cpuCPU 图 + 图例
mem / memory内存图
net / network网络图 + 图例
proc / process / processes进程表 + 搜索
temp / temperature温度表
temp_graph / temperature_graph温度图
disk磁盘表
disk_io_graph磁盘 I/O 图
batt / battery电池
empty空白占位

默认布局(来自默认配置注释,ratio 为 30/40/30 三行):

[[row]]
  ratio=30
  [[row.child]]
  type="cpu"
[[row]]
  ratio=40
  [[row.child]]
    ratio=4
    type="mem"
  [[row.child]]
    ratio=3
    [[row.child.child]]
      type="temp"
    [[row.child.child]]
      type="disk"
[[row]]
  ratio=30
  [[row.child]]
    type="net"
  [[row.child]]
    type="proc"
    default=true

💡 说明:default = true 标记启动时默认选中的组件;同一组件可重复出现(如两个 CPU 图放不同行)。

自定义布局生效实测:配置「CPU 一行 + Processes 一行」两组件布局后启动,实测渲染帧只剩这两个组件(Memory/Temperatures/Disks/Network 均消失),Processes 组件占满第二行:

┌ CPU ─ 1.38 1.68 2.75 ─────────────────────────────┐┌─────────────────────────┐
│100%│                                               ││CPU          Use         │
...
┌ Processes ─────────────────────────────────────────────────────────────────┐
│PID(p)                                       Name(n)             CPU%(c)▼   User │

六、生产配置模板(三份实测可用)

以下三份模板均在本机逐份加载实测(渲染正常、无报错),按「低配 VPS / 日常排障 / 长时观察」三档场景给出。

模板一:低配 VPS 轻量档(1C512MB 级小机:关图形曲线降 CPU 占用、降刷新率):

[flags]
basic = true          # 基础模式,无字符画布绘制开销
rate = "2s"           # 2 秒刷新,降低采集频率
retention = "10m"     # 默认保留时长
enable_cache_memory = false

[processes]
columns = ["PID", "Name", "CPU%", "Mem%", "User"]
default_sort = "CPU%"

模板二:日常排障主力档(进程为中心,I/O 列齐全,长保留便于回看):

[flags]
default_time_value = "5m"
retention = "1h"
rate = "1s"

[processes]
default_sort = "CPU%"
columns = ["PID", "Name", "CPU%", "Mem%", "R/s", "W/s", "User", "State", "Time"]

[[row]]
  ratio=60
  [[row.child]]
  type="proc"
[[row]]
  ratio=40
  [[row.child]]
    ratio=2
    type="cpu"
  [[row.child]]
    ratio=1
    type="net"

实测渲染帧关键证据(进程表置顶、自定义 9 列、CPU% 降序标记、下方 CPU+Network):

┌ Processes ──────────────────────────────────────────────────────────────────┐
│PID(p)              Name(n)              CPU%(c)▼             Mem%(m)  ...   │
┌ CPU ─ 1.56 1.68 2.05 ───────────────────────┐┌ Network ────────────────────┐

模板三:长时观察档(趋势观察:大窗口长保留 + 噪声挂载过滤):

[flags]
default_time_value = "10m"
time_delta = "1m"
retention = "2h"
rate = "3s"
autohide_time = true

[disk.mount_filter]
is_list_ignored = true
list = ["/etc/hostname", "/etc/hosts"]
regex = false
case_sensitive = false
whole_word = false

⚠️ 注意:retention 越大内存占用越高(时序点存在进程内存里),2h 档在低配机器上请先观察 btm 自身的内存占用再决定是否上调。

七、常见问题

Q1:改了配置为什么没生效?

bottom 无热加载,保存配置后必须退出并重启 btm。另外确认改的段名拼写正确——未知键会被静默忽略(实测 [flags] no_such_option = true 不报错),建议装 JSON Schema 补全校验(见 3.4 节)。

Q2:启动报 Configuration file error: 'rate' was set with an invalid value?

对应键的取值超出合法范围。实测 rate = "abc" 即报此错(rate 需为 ≥250ms 的时间值)。改回合法值即可;报错信息会直接给出键名。

Q3:启动报 TOML parse error?

语法错误(少了引号/等号后的值等),报错含行号与列号,照着修:

Error: TOML parse error at line 3, column 14
  |
3 | broken_key =

Q4:旧配置里的 [flags] regex = true 还能用吗?

能跑(旧键兼容),但已标记 Deprecated,语义已迁移到 [processes] regex。建议迁移(映射表见第四章技术拓展),避免未来版本移除后配置失效。

Q5:想白名单只显示某几块盘怎么做?

把过滤器的 is_list_ignored 设为 false(只显示命中项),如:

[disk.name_filter]
is_list_ignored = false
list = ["/dev/sda"]
regex = false
case_sensitive = false
whole_word = false

黑名单/白名单语义由 is_list_ignored 一个键切换,name_filter 与 mount_filter 可同时启用叠加过滤。

八、参考链接

  1. 官方配置文档(config-file):https://clementtsang.github.io/bottom-stable/configuration/config-file/
  2. 官方 flags 对照表:https://github.com/ClementTsang/bottom/blob/main/docs/content/configuration/config-file/flags.md
  3. 官方默认配置样例:https://github.com/ClementTsang/bottom/blob/main/sample_configs/default_config.toml
  4. 站内本组件系列:《bottom 介绍与选型指南》、《Ubuntu 22.04 安装 bottom 0.14.9 指南》、《bottom 0.14.9 常用 CLI 命令与工具详解》