bottom 配置文件 [flags] 详解:从命令行参数到 TOML 配置的完整映射指南
2026/9/14 1:43:37 网站建设 项目流程

bottom 配置文件 [flags] 详解:从命令行参数到 TOML 配置的完整映射指南

【免费下载链接】bottomYet another cross-platform graphical process/system monitor.项目地址: https://gitcode.com/GitHub_Trending/bo/bottom

本指南以 bottom(一个跨平台图形化进程/系统监控工具,命令名为btm)的配置文件 Flags 章节为骨架,系统讲解[flags]配置表的作用、全部字段含义、与命令行参数的对应关系以及弃用字段的迁移路径。读完本文,你将掌握如何用一份持久化的 TOML 配置文件替代频繁敲击的命令行参数,并理解 bottom 内部“命令行参数 > 配置节 > 弃用字段”的三级优先级解析机制。

为什么需要 [flags] 配置表

bottom 的大部分行为都可以通过命令行参数控制(例如btm -a隐藏平均 CPU、btm -b进入 basic 模式),但每次启动都手动输入参数既繁琐又容易出错。为此,bottom 提供了配置文件机制:你可以在配置文件的[flags]表中声明与命令行参数等价的选项,从而让偏好设置持久化生效。

关于配置文件本身(默认查找位置、自动创建等),可参考 配置文件总览;完整的命令行参数清单见 命令行选项。

快速上手:在 [flags] 表中写入选项

[flags]是配置文件中的一个顶层 TOML 表,配置方式非常直接——字段名与命令行参数一一对应,值为布尔、整数或字符串。例如:

[flags] hide_avg_cpu = true

这等价于启动时执行btm -a

一个更完整的示例:

[flags] dot_marker = true # 图表使用圆点标记而非默认的盲文标记 rate = "1s" # 刷新率 1 秒 retention = "10m" # 保留最近 10 分钟的数据 temperature_type = "c" # 温度单位:摄氏度 expanded = true # 启动时展开默认组件 table_gap = "space" # 表头与数据行之间的间隔

仓库自带的 默认配置模板 中,[flags]段所有选项默认以注释形式存在,取消注释即可启用,并附有中文注释说明与“Deprecated - use xxx”的迁移提示。

优先级规则:命令行参数覆盖配置文件

[flags]中的设置并不是"唯一"生效的。从 默认配置模板 的注释可以确认:运行时显式传入的命令行参数(如btm -a)会覆盖配置文件中相同选项的设置。这一规则同样体现在源码中:src/options.rs定义了一系列宏(如is_flag_enabled!enabled_option_with_deprecated!),其判断顺序均为"先查 CLI 参数,再查对应配置节,最后回退到默认值"。

[flags] 全部字段详解

下表完整覆盖原文档中[flags]支持的全部字段(约 40 项),并按功能分组,便于查阅。除原文档说明外,补充了默认值与取值范围等实操细节(依据 命令行选项 与 参数定义源码)。

图表与界面外观

字段类型说明
dot_markerBoolean图表使用圆点标记而非默认的盲文(braille)标记。对应-m/--dot_marker
basicBoolean隐藏图表,使用更简洁的界面(受 htop 设计启发)。对应-b/--basic
use_old_network_legendBoolean已废弃,使用旧的网络图例样式。对应--use_old_network_legend
show_table_scroll_positionBoolean在表格组件的标题中显示列表滚动位置指示器。
show_table_scroll_barBoolean在表格组件右边缘显示滚动条。
table_gapString("none"/"space"/"line"控制表头与数据行之间的间隔,默认"space"。源码中由TableGap枚举(见 flags.rs)定义:none高度为 0,spaceline高度为 1 行。
autohide_timeBoolean在图表中临时显示时间刻度(缩放时短暂出现后自动隐藏);若同时设置了hide_time则无效。对应--autohide_time
hide_timeBoolean完全隐藏时间刻度。对应--hide_time
expandedBoolean启动应用时展开默认组件;在 basic 模式下无效。对应-e/--expanded

刷新率与时间刻度

字段类型说明
rateUnsigned Int(毫秒)或 String(人类可读时间)数据刷新间隔。默认1s(1000ms),最小250ms,值越小系统资源占用越高。对应-r/--rate
default_time_valueUnsigned Int(毫秒)或 String(人类可读时间)图表默认时间窗口。默认60s,最小30s。对应-t/--default_time_value
time_deltaUnsigned Int(毫秒)或 String(人类可读时间)每次缩放时时间窗口的变化量。默认15s,最小1s。对应-d/--time_delta
retentionString(人类可读时间,如"10m""1h"一次最多存储多长时间的历史数据。默认10m,最小1m,值越大内存占用越高。对应--retention

上述时间类字段在源码中统一由StringOrNum枚举(config.rs)解析:既可以传纯毫秒数字,也可以传"1s""10m""1h"这类人类可读格式,这与命令行参数的行为完全一致。

温度与图例位置

字段类型说明
temperature_typeString("k"/"f"/"c"/"kelvin"/"fahrenheit"/"celsius"温度单位,默认"c"(摄氏度)。命令行对应-c/-f/-k
memory_legendString(九宫格位置之一,见下)已废弃,改用memory_graph.legend_positionmemory.legend_position
network_legendString(九宫格位置之一,见下)已废弃,改用network_graph.legend_positionnetwork.legend_position

图例位置枚举(9 个合法值)在 命令行选项 与 参数定义源码 中一致定义为:"none""top-left""top""top-right""left""right""bottom-left""bottom""bottom-right"

默认组件(Widget)选择

字段类型说明
default_widget_typeString("cpu"/"proc"/"net"/"temp"/"mem"/"disk",与布局选项一致)设置启动时的默认选中组件类型。默认布局下为"proc"(进程组件);自定义布局下为第一个遇到的组件。命令行对应--default_widget_type
default_widget_countUnsigned Int设置第 N 个同类型组件作为默认。需与default_widget_type配合,从左到右、从上到下计数,默认值 1。对应--default_widget_count

例如一个布局中有 4 个 CPU 组件,default_widget_type = "cpu"搭配default_widget_count = 3会选择第 3 个 CPU 组件作为启动时的默认选中项。

进程相关(大多已迁移至 [processes] 节)

字段类型说明
current_usageBoolean已废弃,改用processes.current_usage。将进程 CPU% 基于当前 CPU 使用率计算。对应-u/--current_usage
group_processesBoolean已废弃,改用processes.default_grouped。默认将同名进程分组;设置树形模式时无效。对应-g/--group_processes
case_sensitiveBoolean已废弃,改用processes.case_sensitive。默认开启搜索大小写敏感。对应-S/--case_sensitive
whole_wordBoolean已废弃,改用processes.whole_word。默认开启整词匹配。对应-W/--whole_word
regexBoolean已废弃,改用processes.regex。默认开启正则搜索。对应-R/--regex
process_memory_as_valueBoolean已废弃,改用processes.default_memory_value。默认以数值而非百分比显示进程内存。
treeBoolean已废弃,改用processes.default_tree。默认以树形模式显示进程组件。对应-T/--tree
process_commandBoolean已废弃,改用processes.process_command。默认以完整命令而非进程名显示。
disable_advanced_killBoolean已废弃,改用processes.disable_advanced_kill。禁用向进程发送信号的扩展终止能力;仅 Linux、macOS、FreeBSD 可用。
unnormalized_cpuBoolean已废弃,改用processes.unnormalized_cpu。进程 CPU% 不按核心数归一化。对应-n/--unnormalized_cpu
hide_k_threadsBoolean已废弃,改用processes.hide_k_threads。隐藏内核线程。
tree_collapseBoolean已废弃,改用processes.tree_collapse。默认折叠进程树。

内存与网络(大多已迁移至对应组件节)

字段类型说明
enable_cache_memoryBoolean已废弃,改用memory.cache_memory。启用缓存与缓冲内存统计(Windows 不可用)。
free_arcBoolean已废弃,改用memory.free_arc。从内存用量中扣除可释放的 ARC 内存(ZFS,需编译时启用zfs特性)。
network_use_binary_prefixBoolean已废弃,改用network_graph.use_binary_prefix。网络组件使用二进制前缀(如 Ki 而非 k)。
network_use_bytesBoolean已废弃,改用network_graph.use_bytes。网络组件以字节显示(默认是比特)。
network_use_logBoolean已废弃,改用network_graph.use_log。网络组件使用对数刻度。

安全、GPU 与其他

字段类型说明
disable_clickBoolean禁用鼠标点击交互。对应--disable_click
disable_keysBoolean禁用键盘快捷键,包括退出 bottom 的快捷键,请谨慎使用。对应--disable_keys
read_onlyBoolean禁止任何影响系统的操作(例如终止进程)。对应--read_only
no_writeBoolean禁止写入配置文件(不更新/不创建配置)。
disable_gpuBoolean禁用 NVIDIA 与 AMD GPU 数据采集。对应--disable_gpu
batteryBoolean在非自定义布局中显示电池组件。对应--battery
hide_avg_cpuBoolean已废弃,改用cpu.hide_avg_cpu。隐藏平均 CPU 使用率条目。对应-a/--hide_avg_cpu
cpu_left_legendBoolean已废弃,改用cpu.left_legend。将 CPU 图表图例放在左侧。对应-l/--cpu_left_legend
average_cpu_rowBoolean已废弃,改用cpu.basic_average_cpu_row。在 basic 模式下将平均 CPU 条目移到独立一行。

弃用字段(Deprecated Flags)与迁移机制

从上表可见,[flags]中有大量字段已被标记为Deprecated,这是 bottom 配置体系演进的结果:随着组件级配置节([cpu][memory_graph][network_graph][processes]等)逐步完善,旧的扁平字段被迁移到语义更明确的组件节中。

如果你仍在配置文件中使用旧字段,bottom 不会拒绝加载,但会在启动时向 stderr 输出形如:

Warning: The config option 'hide_avg_cpu' is deprecated and will eventually be removed. Please use 'cpu.hide_avg_cpu' instead.

的警告。该机制实现在 options.rs 的deprecated_warning/deprecated_warning_with_alias函数中,并由enabled_option_with_deprecated!宏在读取配置时触发(options.rs)。触发条件有两点:一是 CLI 参数未设置,二是对应新配置节字段也未设置,此时才回退读取旧字段并告警。

配套的集成测试可以佐证这一行为:tests/valid_configs/empty_flags.toml是一个只含空[flags]表的配置,其注释明确指出"不应触发任何弃用警告"——说明仅当旧字段被实际使用时才会告警。

迁移建议:将所有 Deprecated 字段替换为表格中标注的新路径,例如:

# 旧写法(会告警) [flags] hide_avg_cpu = true # 新写法 [cpu] hide_avg_cpu = true

GeneralConfig结构体(flags.rs)同时保留新旧字段正是为了平滑过渡,但旧字段最终会被移除,尽早迁移可以避免未来升级时配置失效。

与命令行参数的映射速查

[flags]的核心设计目标就是"避免每次重复输入命令行参数"。二者的完整对应关系已在 命令行选项 中列出,这里给出常用映射速查(格式:配置文件字段 ↔ 命令行参数):

配置文件字段命令行参数
hide_avg_cpu-a,--hide_avg_cpu
basic-b,--basic
dot_marker-m,--dot_marker
expanded-e,--expanded
rate-r,--rate
default_time_value-t,--default_time_value
time_delta-d,--time_delta
retention--retention
hide_time--hide_time
autohide_time--autohide_time
disable_click--disable_click
disable_keys--disable_keys
read_only--read_only
show_table_scroll_position--show_table_scroll_position
default_widget_type--default_widget_type
default_widget_count--default_widget_count
disable_gpu--disable_gpu
battery--battery
case_sensitive-S,--case_sensitive
current_usage-u,--current_usage
group_processes-g,--group_processes
regex-R,--regex
tree-T,--tree
unnormalized_cpu-n,--unnormalized_cpu
whole_word-W,--whole_word
tree_collapse--tree_collapse
process_command--process_command
process_memory_as_value--process_memory_as_value
hide_k_threads--hide_k_threads
disable_advanced_kill--disable_advanced_kill
temperature_type"c"/"f"/"k"-c/--celsius-f/--fahrenheit-k/--kelvin
memory_legend--memory_legend
network_legend--network_legend
network_use_bytes--network_use_bytes
network_use_binary_prefix--network_use_binary_prefix
network_use_log--network_use_log
use_old_network_legend--use_old_network_legend
enable_cache_memory--enable_cache_memory
free_arc--free_arc

命令行参数在 args.rs 中通过 clap 定义,支持下划线(--hide_avg_cpu)与连字符(--hide-avg-cpu)两种写法(源码中为每个含下划线的长参数显式注册了连字符别名,并有catch_missing_hyphen_alias测试保证这一点)。另外需注意:并非所有命令行参数都有配置文件对应项——例如--theme(主题)、--get_threads(收集线程信息)、--process_default_sort(进程默认排序列)、--show_packets--network_start_zeroed--short_gpu_names等属于组件节或专用参数,应直接查阅对应章节(如 进程组件配置、内存图配置)或使用btm --help查看完整说明。

配置文件位置与 Schema 支持

使用[flags]前,需确认配置文件所在位置。若未通过-C/--config_location指定,bottom 会在以下默认位置查找(不存在时自动以默认值创建):

操作系统默认配置位置
macOS$HOME/Library/Application Support/bottom/bottom.toml$HOME/.config/bottom/bottom.toml$XDG_CONFIG_HOME/bottom/bottom.toml
Linux$HOME/.config/bottom/bottom.toml$XDG_CONFIG_HOME/bottom/bottom.toml
WindowsC:\Users\<USER>\AppData\Roaming\bottom\bottom.toml

配置查找逻辑在 options.rs 中实现:优先使用-C指定路径;其次为兼容旧版本,若~/.config/bottom/bottom.toml已存在则沿用;否则使用系统配置目录下的bottom/bottom.toml;macOS 下还会额外检查$XDG_CONFIG_HOME

此外,配置文件支持 JSON Schema,可在支持 Schema 的编辑器/IDE 中获得补全与校验。仓库的 schema 目录按版本存放了对应的bottom.json(例如 v0.14.7 版 Schema),可配置到你的编辑器中辅助编写[flags]及其他所有配置节。

小结与自查清单

[flags]是 bottom 配置体系中"命令行参数的持久化替身",掌握它意味着:

  1. [flags]表声明偏好,避免每次启动重复敲参数;
  2. 牢记优先级:命令行参数 > 新组件配置节 > 弃用字段 > 默认值;
  3. 优先使用非 Deprecated 字段,将旧字段迁移到[cpu][processes][memory_graph][network_graph]等组件节;
  4. 时间类字段既支持毫秒数字也支持人类可读格式(ratedefault_time_valuetime_deltaretention);
  5. 结合 默认配置模板 与 JSON Schema 快速搭建自己的配置。

如需更深入的组件级配置(进程、CPU、内存、网络、磁盘、温度等),可从 配置目录 进入对应章节继续阅读。

【免费下载链接】bottomYet another cross-platform graphical process/system monitor.项目地址: https://gitcode.com/GitHub_Trending/bo/bottom

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询