系统监控工具指南 / 第5章:btop详解
第5章:btop详解
5.1 btop概述
什么是btop
btop 是一款现代化的终端系统监控工具,以精美的界面和丰富的功能著称。它是 bashtop 和 bpytop 的 C++ 重写版本,性能更优、资源占用更低。
btop的特点
- 精美界面 - 现代化设计,支持鼠标操作
- 主题丰富 - 多种内置主题,支持自定义
- 功能全面 - CPU、内存、磁盘、网络、进程全覆盖
- 高性能 - C++编写,资源消耗低
- 高度可定制 - 配置选项丰富
btop vs 其他工具
| 特性 | btop | htop | top | glances |
|---|---|---|---|---|
| 界面美观 | ★★★★★ | ★★★ | ★ | ★★★ |
| 鼠标支持 | ✓ | ✓ | ✗ | ✓ |
| 主题定制 | ✓ | 有限 | ✗ | 有限 |
| 资源占用 | 低 | 低 | 极低 | 中等 |
| 功能丰富 | ✓ | ✓ | 基础 | ✓ |
| 历史图表 | ✓ | ✗ | ✗ | ✓ |
5.2 安装与配置
安装方法
# Debian/Ubuntu(推荐使用snap)
sudo snap install btop
# 或从源码编译
git clone https://github.com/aristocratos/btop.git
cd btop
make
sudo make install
# CentOS/RHEL(需要EPEL)
sudo yum install epel-release
sudo yum install btop
# Arch Linux
sudo pacman -S btop
# macOS
brew install btop
# Flatpak
flatpak install flathub com.aristocratos.btop
# Docker
docker run -it --rm --pid=host --privileged nicolargo/glances
验证安装
btop --version
# btop version: 1.2.13
配置文件位置
# 用户配置
~/.config/btop/btop.conf
# 主题目录
~/.config/btop/themes/
# 系统配置
/etc/btop/btop.conf
基本配置
# 创建配置目录
mkdir -p ~/.config/btop
# 首次运行会自动生成配置
btop
# 手动编辑配置
nano ~/.config/btop/btop.conf
5.3 界面详解
整体布局
┌─────────────────────────────────────────────────────────────────┐
│ btop [Main] 14:32:15 │
├───────────────────────────────┬─────────────────────────────────┤
│ CPU │ Memory │
│ ┌─────────────────────────┐ │ ┌─────────────────────────┐ │
│ │ ██████████████████████ │ │ │ ████████████████ │ │
│ │ ██████████████████████ │ │ │ ████████████████ │ │
│ │ 62.5% 1234 MHz │ │ │ 8.0G / 16.0G │ │
│ └─────────────────────────┘ │ └─────────────────────────┘ │
├───────────────────────────────┼─────────────────────────────────┤
│ Disks │ Network │
│ ┌─────────────────────────┐ │ ┌─────────────────────────┐ │
│ │ / 45.2G / 100G │ │ │ eth0 ↓1.2M ↑456K │ │
│ │ /home 23.4G / 50G │ │ │ │ │
│ └─────────────────────────┘ │ └─────────────────────────┘ │
├───────────────────────────────┴─────────────────────────────────┤
│ Processes MEM: 234M │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ PID USER CPU% MEM% Command │ │
│ │ 1234 root 45.2 12.3 nginx │ │
│ │ 5678 mysql 23.1 34.5 mysqld │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
CPU面板
┌─ CPU ────────────────────────────────────────────────────────────┐
│ ┌─ Core 0 ───────┐ ┌─ Core 1 ───────┐ ┌─ Core 2 ───────┐ │
│ │ ██████████████ │ │ █████████████ │ │ ██████████ │ │
│ │ 75.2% 3.2GHz │ │ 65.8% 3.1GHz │ │ 45.6% 2.8GHz │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ Total: 62.5% Temp: 65°C Load: 2.34 │
└──────────────────────────────────────────────────────────────────┘
CPU信息:
- 使用率 - 每个核心和总体使用率
- 频率 - 当前运行频率
- 温度 - CPU温度(需要传感器支持)
- 负载 - 系统负载平均值
内存面板
┌─ Memory ─────────────────────────────────────────────────────────┐
│ ┌─ RAM ──────────────────────────────────────────────────────┐ │
│ │ ████████████████████████████████████████ │ │
│ │ Used: 12.3G / Total: 16.0G (76.9%) │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ ┌─ Swap ─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Used: 0B / Total: 8.0G (0.0%) │ │
│ └─────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
内存信息:
- Used - 已使用内存
- Cached - 缓存内存
- Free - 空闲内存
- Swap - 交换分区使用
磁盘面板
┌─ Disks ──────────────────────────────────────────────────────────┐
│ ┌─ /dev/sda1 (/) ─────────────────────────────────────────────┐ │
│ │ ████████████████████████████████████████ │ │
│ │ 45.2G / 100G (45.2%) R: 1.2M/s W: 456K/s │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ ┌─ /dev/sda2 (/home) ─────────────────────────────────────────┐ │
│ │ ██████████████████ │ │
│ │ 23.4G / 50G (46.8%) R: 234K/s W: 123K/s │ │
│ └─────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
磁盘信息:
- 使用率 - 空间使用百分比
- R/W - 读写速率
网络面板
┌─ Network ────────────────────────────────────────────────────────┐
│ ┌─ eth0 ──────────────────────────────────────────────────────┐ │
│ │ ↓ 1.23M ↑ 456K │ │
│ │ ↓ 1.2M/s ↑ 456K/s │ │
│ └─────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
网络信息:
- Total - 总流量
- Speed - 当前速率
进程面板
┌─ Processes ──────────────────────────────────────────────────────┐
│ Sort: CPU Order: Descending Threads: Show │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ PID USER CPU% MEM% Command │ │
│ │ 1234 root 45.2 12.3 nginx: worker process │ │
│ │ 5678 mysql 23.1 34.5 /usr/sbin/mysqld │ │
│ │ 9012 www 12.3 5.6 php-fpm: pool www │ │
│ └─────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
5.4 快捷键大全
基本导航
| 快捷键 | 功能 |
|---|---|
↑ / ↓ | 上下移动选择 |
← / → | 切换面板 |
Enter | 进入/退出进程面板 |
Escape | 返回/退出 |
q | 退出btop |
面板切换
| 快捷键 | 功能 |
|---|---|
1 | CPU面板 |
2 | 内存面板 |
3 | 磁盘面板 |
4 | 网络面板 |
5 | 进程面板 |
进程操作
| 快捷键 | 功能 |
|---|---|
Space | 标记/取消标记进程 |
k | 终止选中进程 |
s | 终止标记的进程 |
c | 切换显示命令路径 |
e | 显示环境变量 |
l | 显示打开的文件 |
排序操作
| 快捷键 | 功能 |
|---|---|
Shift+P | 按CPU排序 |
Shift+M | 按内存排序 |
Shift+N | 按PID排序 |
Shift+T | 按运行时间排序 |
Shift+R | 反转排序 |
显示选项
| 快捷键 | 功能 |
|---|---|
m | 显示/隐藏菜单 |
t | 显示/隐藏树状视图 |
T | 切换温度单位 |
F | 显示/隐藏文件系统 |
n | 显示/隐藏网络 |
i | 显示/隐藏磁盘IO |
配置操作
| 快捷键 | 功能 |
|---|---|
M | 主题菜单 |
O | 选项菜单 |
? | 帮助 |
5.5 主题配置
内置主题
btop包含多个内置主题:
| 主题 | 描述 |
|---|---|
| Default | 默认主题 |
| Nord | 北欧配色 |
| Dracula | 经典紫色调 |
| Monokai | 暖色调 |
| Solarized | 柔和配色 |
| Gruvbox | 复古配色 |
| Tokyo Night | 东京夜色 |
| Catppuccin | 柔和粉彩 |
切换主题
# 方法1:运行时切换
# 按M打开主题菜单
# 选择主题
# 方法2:修改配置文件
nano ~/.config/btop/btop.conf
# 修改这一行
color_theme = "Dracula"
创建自定义主题
# 主题文件位置
~/.config/btop/themes/
# 复制现有主题作为基础
cp /snap/btop/current/themes/Default.theme ~/.config/btop/themes/MyTheme.theme
# 编辑主题
nano ~/.config/btop/themes/MyTheme.theme
主题文件结构:
# Main BG, use "default" for terminal default
theme[main_bg]="#1e1e2e"
# Main text color
theme[main_fg]="#cdd6f4"
# Title color for boxes
theme[title]="#cdd6f4"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#89b4fa"
# Selected text color
theme[selected_fg]="#1e1e2e"
# Selected row color
theme[selected_bg]="#45475a"
# Color of inactive/disabled text
theme[inactive_fg]="#585b70"
# Color of text showing meters/scales
theme[meter_bg]="#313244"
# Color of meter bars
theme[meter_fg]="#a6e3a1"
# CPU graph colors
theme[cpu_start]="#89b4fa"
theme[cpu_mid]="#f9e2af"
theme[cpu_end]="#f38ba8"
# Memory colors
theme[mem_start]="#89b4fa"
theme[mem_mid]="#a6e3a1"
theme[mem_end]="#f38ba8"
常用主题推荐
开发环境 - Dracula:
theme[main_bg]="#282a36"
theme[main_fg]="#f8f8f2"
theme[title]="#bd93f9"
生产环境 - Nord:
theme[main_bg]="#2e3440"
theme[main_fg]="#d8dee9"
theme[title]="#88c0d0"
护眼 - Solarized:
theme[main_bg]="#002b36"
theme[main_fg]="#839496"
theme[title]="#268bd2"
5.6 配置文件详解
主要配置选项
# ~/.config/btop/btop.conf
# 颜色主题
color_theme = "Default"
# 更新间隔(毫秒)
update_ms = 2000
# 使用图形符号(需要Nerd字体)
graph_symbol = "braille"
# 显示温度
show_disks = true
# 显示网络
show_net = true
# 显示CPU频率
show_cpu_freq = true
# 显示CPU温度
check_temp = true
# 温度单位
temp_scale = "celsius"
# 显示电池
show_battery = true
# 进程排序
proc_sorting = "cpu lazy"
# 进程反转排序
proc_reversed = false
# 显示线程
proc_tree = false
# 显示内核线程
proc_colors = true
# 显示详细CPU
cpu_invert_filter = true
# 显示系统信息
show_uptime = true
# 显示磁盘IO
show_disk_io = true
# 显示网络IO
show_net_io = true
# 网络界面
net_iface = ""
# 磁盘过滤
disk_filter = ""
# 日志级别
log_level = "WARNING"
高级配置
# 自定义过滤器
cpu_filter = "average"
# 自定义排序
custom_cpu_name = ""
# 图形样式
graph_symbol_cpu = "braille"
graph_symbol_mem = "braille"
graph_symbol_net = "braille"
graph_symbol_proc = "braille"
# 颜色主题覆盖
# 可以覆盖特定颜色
# theme[main_bg] = "#1e1e2e"
5.7 高级功能
5.7.1 树状视图
# 按t切换树状视图
# 显示进程的父子关系
# 树状视图中的操作
# Space - 折叠/展开
# c - 标记子进程
树状视图示例:
▼ systemd (PID: 1)
├─ systemd-journald (PID: 567)
├─ systemd-udevd (PID: 678)
├─ nginx (PID: 1234)
│ ├─ nginx (PID: 1235)
│ └─ nginx (PID: 1236)
└─ mysqld (PID: 5678)
├─ {mysqld} (PID: 5679)
└─ {mysqld} (PID: 5680)
5.7.2 环境变量查看
# 选择进程 → 按e
# 显示进程的环境变量
# 示例输出
HOME=/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
LANG=en_US.UTF-8
5.7.3 打开文件查看
# 选择进程 → 按l
# 显示进程打开的文件
# 示例输出
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1234 root cwd DIR 253,0 4096 2 /
nginx 1234 root 0r CHR 1,3 0t0 6 /dev/null
nginx 1234 root 3u IPv4 12345 0t0 TCP *:80 (LISTEN)
5.7.4 进程过滤
# 按/进入过滤模式
# 输入过滤关键词
# 只显示匹配的进程
# 清除过滤
# 按Escape
5.7.5 温度监控
# 需要安装lm-sensors
sudo apt install lm-sensors
# 配置传感器
sudo sensors-detect
# 重启btop
btop
# 温度会显示在CPU面板
5.8 性能指标解读
CPU指标
| 指标 | 含义 | 正常范围 |
|---|---|---|
| Total | 总使用率 | <70% |
| User | 用户空间 | <60% |
| System | 内核空间 | <20% |
| Idle | 空闲率 | >30% |
| IOWait | IO等待 | <20% |
| Temperature | 温度 | <80°C |
内存指标
| 指标 | 含义 | 正常范围 |
|---|---|---|
| Used | 已使用 | <80% |
| Cached | 缓存 | 正常(可回收) |
| Free | 空闲 | >10% |
| Swap Used | 交换使用 | 0% |
磁盘指标
| 指标 | 含义 | 正常范围 |
|---|---|---|
| Used | 空间使用 | <80% |
| Read | 读速率 | 取决于磁盘 |
| Write | 写速率 | 取决于磁盘 |
网络指标
| 指标 | 含义 | 说明 |
|---|---|---|
| Download | 下载速率 | 当前下行带宽 |
| Upload | 上传速率 | 当前上行带宽 |
| Total Received | 总接收 | 启动以来的总下载 |
| Total Sent | 总发送 | 启动以来的总上传 |
5.9 实战场景
场景1:快速识别资源消耗大户
# 启动btop
btop
# 进入进程面板(按5)
# 按Shift+P按CPU排序
# 或按Shift+M按内存排序
# 找到消耗最高的进程
# 按k可以终止进程
场景2:监控系统温度
# 安装传感器
sudo apt install lm-sensors
sudo sensors-detect
# 启动btop
btop
# 查看CPU面板的温度显示
# 如果温度>80°C,需要关注散热
场景3:分析网络流量
# 启动btop
btop
# 进入网络面板(按4)
# 查看实时流量
# 如果流量异常高
# 进入进程面板查看哪个进程在消耗网络
场景4:长期监控
# 修改更新频率
nano ~/.config/btop/btop.conf
# 设置较长的更新间隔(毫秒)
update_ms = 5000
# 或者使用脚本记录
btop --tty_on > /tmp/btop_output &
场景5:美化终端
# 切换主题
# 按M打开主题菜单
# 推荐主题
# - Dracula: 紫色调,适合开发
# - Nord: 蓝绿色调,护眼
# - Tokyo Night: 东京夜色
# 自定义主题
# 编辑~/.config/btop/themes/MyTheme.theme
5.10 命令行参数
常用参数
# 基本启动
btop
# 指定主题
btop -t Dracula
# 指定更新间隔(毫秒)
btop -d 5000
# 指定配置文件
btop -c /path/to/btop.conf
# 显示帮助
btop -h
# 显示版本
btop -v
高级参数
# 无颜色输出
btop --no-color
# 禁用某些面板
btop --no-gpu
btop --no-temp
btop --no-battery
5.11 故障排查
问题1:btop启动报错
# 检查版本
btop --version
# 检查终端支持
echo $TERM
# 尝试无颜色模式
btop --no-color
# 查看日志
~/.config/btop/btop.log
问题2:温度不显示
# 安装lm-sensors
sudo apt install lm-sensors
# 检测传感器
sudo sensors-detect
# 测试传感器
sensors
# 重启btop
btop
问题3:图形显示异常
# 检查终端是否支持Unicode
locale
# 尝试不同的图形符号
# 编辑配置
nano ~/.config/btop/btop.conf
# 修改graph_symbol
graph_symbol = "tty"
# 或
graph_symbol = "block"
问题4:资源消耗高
# 增加更新间隔
nano ~/.config/btop/btop.conf
# 设置更长的间隔
update_ms = 5000
# 禁用不需要的功能
check_temp = false
show_battery = false
5.12 与其他工具集成
btop + tmux
# 在tmux中使用btop
tmux new-session -d -s monitor 'btop'
# 分屏显示
tmux split-window -h 'htop'
tmux split-window -v 'watch -n 1 df -h'
btop + SSH
# SSH远程监控
ssh user@server btop
# 或者使用Mosh(更稳定)
mosh user@server btop
btop + Docker
# 在Docker容器中运行btop
docker run -it --rm \
--pid=host \
--privileged \
-v /proc:/proc:ro \
-v /sys:/sys:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
nicolargo/glances
5.13 扩展阅读
5.14 快捷键速查卡
┌──────────────────────────────────────────────────┐
│ btop 快捷键速查卡 │
├──────────────────────────────────────────────────┤
│ 面板 │ 操作 │ 显示 │
│ 1-5 切换 │ k 终止进程 │ m 菜单 │
│ ←→ 切换 │ s 终止标记 │ t 树状视图 │
│ Enter 进程 │ Space 标记 │ T 温度单位 │
├──────────────────────────────────────────────────┤
│ 排序 │ 过滤 │ 设置 │
│ Shift+P CPU │ / 过滤 │ M 主题 │
│ Shift+M 内存│ Escape 清除│ O 选项 │
│ Shift+N PID │ c 路径 │ ? 帮助 │
└──────────────────────────────────────────────────┘
5.15 本章小结
本章详细介绍了btop的使用:
- 安装配置: 多种安装方式、配置文件详解
- 界面详解: CPU、内存、磁盘、网络、进程面板
- 快捷键: 完整的快捷键参考
- 主题配置: 内置主题、自定义主题
- 高级功能: 树状视图、环境变量、文件查看
- 性能指标: 各指标含义和正常范围
- 实战场景: 资源监控、温度监控、网络分析
btop是现代终端监控的首选工具,美观且功能强大,推荐日常使用。
上一章: 第4章:atop详解 下一章: 第6章:iftop详解