btop 快速上手总览

learn 索引 | 主题索引

1. 先记住一句话

btop 是一个终端里的系统资源仪表盘。日常使用时,你只需要先看四件事:CPU 是否满、内存是否吃紧、磁盘是否忙、哪个进程最可疑

2. 最短上手路径

第一步:启动

btop

如果没有安装:

brew install btop

第二步:只看四块区域

区域先看什么用来判断什么
CPU总占用、单核是否打满、负载趋势是否计算压力大、是否单线程瓶颈
MEMused、available、swap是否内存吃紧、是否开始换页
DISK读写速率、磁盘忙碌趋势是否 IO 卡住
PROCCPU%、MEM%、命令名哪个进程最消耗资源

第三步:用排序找到元凶

进入 btop 后,重点掌握:

  • p:进程按 CPU 排序。
  • m:进程按内存排序。
  • /:搜索进程名。
  • 方向键或鼠标滚轮:移动进程列表。
  • q:退出。

只掌握这几个键,就能覆盖绝大多数日常排障。

3. 80% 高频场景

场景一:电脑突然变卡

优先判断顺序:

  1. 看 CPU 总占用是否长期接近 100%。
  2. 看某个单核是否长期打满。
  3. p 找 CPU 最高的进程。
  4. 如果 CPU 不高,再看内存和磁盘。

常见结论:

  • CPU 高:通常是编译、索引、压缩、视频处理、异常循环。
  • 单核高:可能是单线程任务卡住。
  • CPU 不高但仍然卡:继续看内存、swap、磁盘 IO。

场景二:内存快满了

优先看:

  1. MEM 区域的 used 和 available。
  2. swap 是否明显增长。
  3. m 找内存占用最高的进程。

常见结论:

  • available 还多:不一定有问题,系统缓存会占内存。
  • swap 增长明显:说明物理内存可能不够,系统会变慢。
  • 某个服务持续涨内存:可能是泄漏或缓存无限增长。

场景三:磁盘或数据库很慢

优先看:

  1. DISK 区域的读写速率。
  2. 是否持续高写入或高读取。
  3. 结合 PROC 看数据库、Docker、日志进程是否活跃。

常见结论:

  • 高写入:日志、数据库、构建产物、下载任务可能较多。
  • 高读取:索引、扫描、备份、数据库查询可能较多。
  • CPU 和内存都不高但系统卡:磁盘 IO 是高概率嫌疑。

场景四:本地开发服务占资源

常用操作:

  1. / 搜索服务名,比如 javanodemysqldocker
  2. 看该进程的 CPU%、MEM%。
  3. 再结合端口或日志确认它是不是当前项目服务。

常见判断:

  • Java CPU 高:可能是编译、GC、死循环、批任务。
  • Java 内存高:看是否符合 JVM 参数预期。
  • Docker 相关进程高:可能是容器内服务导致,不一定是 Docker 本身的问题。

4. 先别学什么

刚上手 btop 时,先不要纠结:

  • 每个颜色代表的精确定义。
  • 所有设置项。
  • 主题美化。
  • 网络每个字段的细节。
  • 进程信号操作。

这些属于后 80% 的低频知识。先把观察、排序、搜索、判断链路练熟更重要。

5. 一个实用判断公式

遇到机器卡顿时,按这个顺序看:

CPU 高?
  是:按 CPU 排序找进程
  否:看内存
 
内存吃紧或 swap 增长?
  是:按内存排序找进程
  否:看磁盘
 
磁盘读写高?
  是:找数据库、日志、构建、Docker 相关进程
  否:再看网络或具体应用日志

6. 常见误区

误区正确理解
内存 used 高就一定有问题不一定,系统缓存也会占用内存,重点看 available 和 swap
Docker 进程高就是 Docker 坏了不一定,可能是容器里的服务在消耗资源
CPU 瞬间 100% 就是故障不一定,持续高占用才更值得关注
btop 能直接告诉根因btop 负责定位方向,根因还要结合日志、代码、命令进一步确认

7. 推荐日常习惯

  • 本机变卡时,先开 btop,不要急着重启。
  • 先按 CPU 排序,再按内存排序。
  • 发现可疑进程后,再去看日志或项目启动参数。
  • 观察趋势,不要只看一瞬间的数字。