在管理 Linux 服务器、NAS 或软路由(如 iStoreOS / OpenWrt)时,我们经常需要实时查看 CPU 占用、温度、内存和网络吞吐。传统的 top 界面过于简陋,htop 虽然实用但缺少网络与磁盘 IO 的综合趋势波形图。

btop(btop++) 是目前 Linux 终端下颜值最高、整合度最强的一体化监控工具。它不仅支持真彩色(TrueColor)与平滑曲线图表,还原生支持鼠标点击交互。本文将为你提供一份开箱即用的安装与配置教程。


一、 btop 的核心亮点

  • 全模块一屏集成:同屏显示 CPU(分核与温度)、内存(含缓存与 Swap)、磁盘(挂载点与实时读写 IO)、网络(实时上下行波形)以及完整的进程列表。
  • 原生支持鼠标交互:可直接在终端中用鼠标点击切换排序、折叠模块或筛选进程。
  • 极度轻量:基于 C++ 编写,执行效率极高,在低功耗小主机(如 Intel J4105 / N100)上运行毫无压力。
  • 丰富的主题生态:内置数十款极客配色方案(Nord、Dracula、Gruvbox 等)。

二、 全平台安装指南

1. OpenWrt / iStoreOS(软路由 / 旁路由)

iStoreOS 及新版 OpenWrt 官方软件源已收录该包,直接使用 opkg 安装:

# 更新源并安装
opkg update
opkg install btop

2. Debian / Ubuntu / PVE

sudo apt update
sudo apt install btop -y

3. CentOS / RHEL / Fedora / Rocky Linux

# Fedora / Rocky / AlmaLinux
sudo dnf install btop -y

# CentOS 7/8 (需先开启 EPEL 源)
sudo yum install epel-release -y
sudo yum install btop -y

4. Arch Linux / Manjaro

sudo pacman -S btop

5. macOS (通过 Homebrew)

brew install btop

6. Docker 容器免安装运行(便携模式)

如果你不想在主机底层写入任何依赖,可以通过 Docker 一键启动:

docker run --rm -it \
  --name=btop \
  --net=host \
  --pid=host \
  -v /var/run/docker.sock:/var/run/docker.sock \
  ghcr.io/aristocratos/btop:latest

三、 避坑指南:OpenWrt / iStoreOS 报 UTF-8 错误

在精简版 Linux 或软路由系统中启动 btop 时,经常会遇到以下报错:

ERROR: No UTF-8 locale detected!
Use --force-utf argument to force start if you're sure your terminal can handle it.

原因分析

OpenWrt 为了追求极致轻量,默认使用 C 极简字符集,未预设全局 UTF-8 环境变量。

完美解决方案(无污染别名法)

在终端中执行以下两行命令,为 btop 设置自动补全参数的别名(该方法仅针对命令行交互生效,绝不会影响路由器的后台服务与网络转发):

# 将快捷别名写入系统 profile
echo "alias btop='btop --force-utf'" >> /etc/profile
source /etc/profile

配置完成后,以后直接在终端输入 btop 即可秒开!


四、 核心面板与指标解读

┌─ CPU ───────────────────────────┐ ┌─ PROC ──────────────────────────────┐
│ Load: 0.15 0.12 0.08  Temp: 38°C│ │ PID   Program       CPU%  Mem%  Thrd│
│ Core 0: [||||||....] 12%        │ │ 1234  docker        2.5   1.2   14  │
├─ MEM ───────────────────────────┤ │ 5678  clash         1.1   0.8   8   │
│ Used: 1.2G  Free: 2.1G  Swap: 0 │ ├─ DISKS ─────────────────────────────┤
├─ NET ───────────────────────────┤ │ /      1.6G Free    IO: 120 KB/s    │
│ br-lan  TX: 1.2MB/s RX: 4.5MB/s │ │ /ssd  97.0G Free    IO: 0 B/s       │
└─────────────────────────────── ─┘ └─────────────────────────────────────┘
  1. CPU 模块
    • Load AVG:系统 1 / 5 / 15 分钟的平均负载(多核系统下,数值小于总核心数即表示负载轻松)。
    • Temp:CPU 核心温度。
  2. MEM(内存)模块
    • Cached / Available:Linux 缓存与实际可分配内存。
  3. NET(网络流量)模块
    • Download (RX) / Upload (TX):实时网络吞吐曲线。可通过按键切换监控不同网卡(如 br-laneth0docker0)。
  4. PROC 排序模式(cpu lazy vs cpu direct
    • cpu lazy(推荐):平滑加权排序,列表不会频繁上下剧烈抖动,便于鼠标精准点击。
    • cpu direct:即时瞬时排序,反应极端敏感,类似 Windows 任务管理器。

五、 常用快捷键速查表

btop 运行界面中,可随时使用以下单键控制:

按键功能说明
mEsc调出设置菜单(配置主题配色、刷新率等)
p在内置预设布局(Preset 0 ~ 3)之间循环切换
1 / 2 / 3 / 4分别独立显示/隐藏 CPU、MEM、NET、PROC 模块
e切换进程列表为树状图模式(Tree View)
k快速向选中的进程发送 SIGTERM / SIGKILL(强制结束进程)
f过滤/搜索特定进程名(如输入 docker
+ / -调整监控数据刷新间隔(默认 2000ms)
q退出 btop

六、 常见问题 FAQ

Q1:界面布局被我搞乱了,右上角显示 preset* 怎么恢复?

:星号 * 仅代表当前窗口处于“动态自适应排版”状态。如果想彻底恢复出厂设置,直接退出后删除配置文件即可:

rm -rf ~/.config/btop

Q2:为什么 btop 显示了 CPU 温度,却没显示硬盘温度?

btop 底部的 DISKS 模块专注监控容量和读写 IO 速度。若需同时查看 CPU 和 SSD 的精准硬件温度,推荐在终端直接使用 Linux 原生传感器工具:

sensors

Q3:为什么我的 btop 没有显示 GPU(显卡)面板?如何单独查看显卡状态?

:软路由或精简版 Linux 官方源在编译 btop 时,默认剔除了显卡依赖库以保持几百 KB 的极致轻量。若设备搭载了核显(如 Intel UHD 系列)或独显,推荐使用以下两款专属工具进行监控:

  1. 全功能高颜值显卡看板(推荐日常使用)—— nvtop
    支持 Intel、AMD 及 NVIDIA 显卡。界面风格与 btop 类似,提供平滑的 GPU 占用历史波形、显存占用以及调用显卡的进程追踪:
    opkg update && opkg install nvtop   # Ubuntu/Debian 下为 apt install nvtop
    nvtop
    
  2. Intel 官方硬核诊断工具(排查硬件编解码)—— intel_gpu_top
    如果设备运行 Docker 跑 Jellyfin/Plex 等影音服务,可用它精准验证视频是否真正走通了 Intel QuickSync 硬件解码引擎:
    opkg update && opkg install intel-gpu-tools
    intel_gpu_top
    

结语

btop 凭借出色的交互设计和现代化的 UI,完美兼顾了美观与实用性。在 NxShell、Windows Terminal 等支持真彩色的终端中打开它,不仅能让运维监控赏心悦目,还能在系统出现高负载或网络拥堵时秒级定位元凶。