Skip to content
VDS · 监控与性能

htop 与 btop:机器当前正在发生什么

如何查看进程、CPU 和内存的实时画面,哪些列重要,以及为什么全屏程序应在“Screen”中运行而不是在文本控制台里。

更新于 2026年8月23日

当机器开始出现异常时,首先要问的是现在是谁在占用资源。htop 和 btop 能回答这个问题:这两个程序都会实时显示进程、核心负载和内存。

安装

apt update && apt install -y htop btop        # Debian, Ubuntu
dnf install -y htop btop                      # AlmaLinux, CentOS Stream

在较旧的 AlmaLinux 9 软件仓库中可能没有 btop 软件包——请启用 EPEL(dnf install -y epel-release)并重新安装。

通过 SSH 或在“控制台”标签页的“Screen”模式(VNC)下运行这些程序会更方便。文本控制台通过串口工作,它不传输窗口尺寸:那里始终是 80×24,btop 的界面会错乱或拒绝渲染。更多详情请参阅机器控制台。

htop 中要看什么

顶部区块显示每个核心、内存和交换分区的条形图。在 VDS-1 上只有一个条形,在 VDS-6 上有十个。下面是进程表;关键列:

  • CPU% —— 单个核心的占用比例。100% 表示一个核心完全繁忙,而不是整台机器:在四个核心上上限是 400%。
  • MEM% —— 该档位内存的占用比例。
  • RES —— 实际占用的内存量。请以此为准,而不是 VIRT:JVM 和数据库的虚拟大小总是很大,说明不了什么。
  • S —— 状态。R —— 运行中,S —— 休眠,D —— 等待磁盘,Z —— 僵尸。

常用按键:F6 —— 排序(通常按 CPU% 或 MEM%),F4 —— 按名称过滤,F5 —— 进程树(可以看到谁创建了谁),F9 —— 发送信号,q —— 退出。

大量进程处于 D 状态——磁盘是瓶颈,请参阅磁盘负载。load average 高而 CPU% 低——同样是这个问题。

btop 和一次性检查

btop 显示相同的内容,另外还有最近几分钟的 CPU、网络和磁盘图表。它更重,需要合适的终端,但它能立即显示是出现过峰值还是负载一直保持稳定。

当不方便使用终端时,一次性命令就足够了:

ps aux --sort=-%cpu | head -10     # ten most CPU-hungry processes
ps aux --sort=-%mem | head -10     # by memory
uptime                             # average load for 1, 5 and 15 minutes

常见错误

  • 根据单帧判断负载。 htop 启动那一刻的峰值是正常的。观察一分钟,或查看面板 /hosting/vds/m/<id>“概览”中的图表。
  • 直接用 kill -9 结束进程。 首先使用普通的 kill(TERM 信号)或 systemctl stop,让服务关闭其文件和连接。-9 是最后的手段。
  • 把“可用内存很少”与内存不足混为一谈。 Linux 会把空闲内存用于缓存,这是正常的。警告信号是交换分区不断增长,详见文章内存与交换分区。

如果因为机器不再响应 SSH 而无法打开 htop,请使用面板中的“控制台”——即使网络过载和磁盘已满它也能工作。