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,请使用面板中的“控制台”——即使网络过载和磁盘已满它也能工作。