![bottom 配置文件 [flags] 详解:从命令行参数到 TOML 配置的完整映射指南](http://pic.xiahunao.cn/yaotu/bottom 配置文件 [flags] 详解:从命令行参数到 TOML 配置的完整映射指南)
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_gapStringnone/space/line控制表头与数据行之间的间隔默认space。源码中由TableGap枚举见 flags.rs定义none高度为 0space与line高度为 1 行。autohide_timeBoolean在图表中临时显示时间刻度缩放时短暂出现后自动隐藏若同时设置了hide_time则无效。对应--autohide_time。hide_timeBoolean完全隐藏时间刻度。对应--hide_time。expandedBoolean启动应用时展开默认组件在 basic 模式下无效。对应-e/--expanded。刷新率与时间刻度字段类型说明rateUnsigned Int毫秒或 String人类可读时间数据刷新间隔。默认1s1000ms最小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_typeStringk/f/c/kelvin/fahrenheit/celsius温度单位默认c摄氏度。命令行对应-c/-f/-k。memory_legendString九宫格位置之一见下已废弃改用memory_graph.legend_position或memory.legend_position。network_legendString九宫格位置之一见下已废弃改用network_graph.legend_position或network.legend_position。图例位置枚举9 个合法值在 命令行选项 与 参数定义源码 中一致定义为none、top-left、top、top-right、left、right、bottom-left、bottom、bottom-right。默认组件Widget选择字段类型说明default_widget_typeStringcpu/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 trueGeneralConfig结构体flags.rs同时保留新旧字段正是为了平滑过渡但旧字段最终会被移除尽早迁移可以避免未来升级时配置失效。与命令行参数的映射速查[flags]的核心设计目标就是避免每次重复输入命令行参数。二者的完整对应关系已在 命令行选项 中列出这里给出常用映射速查格式配置文件字段 ↔ 命令行参数配置文件字段命令行参数hide_avg_cpu-a,--hide_avg_cpubasic-b,--basicdot_marker-m,--dot_markerexpanded-e,--expandedrate-r,--ratedefault_time_value-t,--default_time_valuetime_delta-d,--time_deltaretention--retentionhide_time--hide_timeautohide_time--autohide_timedisable_click--disable_clickdisable_keys--disable_keysread_only--read_onlyshow_table_scroll_position--show_table_scroll_positiondefault_widget_type--default_widget_typedefault_widget_count--default_widget_countdisable_gpu--disable_gpubattery--batterycase_sensitive-S,--case_sensitivecurrent_usage-u,--current_usagegroup_processes-g,--group_processesregex-R,--regextree-T,--treeunnormalized_cpu-n,--unnormalized_cpuwhole_word-W,--whole_wordtree_collapse--tree_collapseprocess_command--process_commandprocess_memory_as_value--process_memory_as_valuehide_k_threads--hide_k_threadsdisable_advanced_kill--disable_advanced_killtemperature_typec/f/k-c/--celsius、-f/--fahrenheit、-k/--kelvinmemory_legend--memory_legendnetwork_legend--network_legendnetwork_use_bytes--network_use_bytesnetwork_use_binary_prefix--network_use_binary_prefixnetwork_use_log--network_use_loguse_old_network_legend--use_old_network_legendenable_cache_memory--enable_cache_memoryfree_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.tomlLinux$HOME/.config/bottom/bottom.toml、$XDG_CONFIG_HOME/bottom/bottom.tomlWindowsC:\Users\USER\AppData\Roaming\bottom\bottom.toml配置查找逻辑在 options.rs 中实现优先使用-C指定路径其次为兼容旧版本若~/.config/bottom/bottom.toml已存在则沿用否则使用系统配置目录下的bottom/bottom.tomlmacOS 下还会额外检查$XDG_CONFIG_HOME。此外配置文件支持 JSON Schema可在支持 Schema 的编辑器/IDE 中获得补全与校验。仓库的 schema 目录按版本存放了对应的bottom.json例如 v0.14.7 版 Schema可配置到你的编辑器中辅助编写[flags]及其他所有配置节。小结与自查清单[flags]是 bottom 配置体系中命令行参数的持久化替身掌握它意味着用[flags]表声明偏好避免每次启动重复敲参数牢记优先级命令行参数 新组件配置节 弃用字段 默认值优先使用非 Deprecated 字段将旧字段迁移到[cpu]、[processes]、[memory_graph]、[network_graph]等组件节时间类字段既支持毫秒数字也支持人类可读格式rate、default_time_value、time_delta、retention结合 默认配置模板 与 JSON Schema 快速搭建自己的配置。如需更深入的组件级配置进程、CPU、内存、网络、磁盘、温度等可从 配置目录 进入对应章节继续阅读。【免费下载链接】bottomYet another cross-platform graphical process/system monitor.项目地址: https://gitcode.com/GitHub_Trending/bo/bottom创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考