htop需用sudo启动并配置F2中显示内核线程、用户线程及IO速率,重点关注TIME+和RES而非仅%CPU/%MEM,F4过滤比F3更实用,但需注意通配符匹配逻辑。

htop 本身就已经比 top 更直观了,关键在于启动方式、界面配置和快捷键组合是否用对了——否则它只是个“彩色版 top”而已。
启动时加 sudo 才能看全进程
不加 sudo 运行 htop,你只能看到当前用户启动的进程,系统级服务(如 systemd、dbus、内核线程)和其它用户的进程全被过滤掉。这会导致两个常见误判:
- 明明系统卡顿,但
%CPU和%MEM排名前列全是自己的测试脚本,漏掉了真正吃资源的mysqld或dockerd - 看不到
S列为K(内核线程)或T(跟踪状态)的异常进程,无法识别软中断飙升或进程挂起
正确做法是始终用 sudo htop 启动;如果不想每次输密码,可临时加权限:sudo setcap cap_sys_ptrace+ep /usr/bin/htop(需 root 权限,且注意安全边界)。
F2 配置里必须打开的三项
默认配置会隐藏大量关键信息。进 F2 → Meters 和 Screens 菜单后,这几个选项不打开,等于白装 htop:
-
hide_kernel_threads=0:否则所有kthreadd、rcu_gp类内核线程都不显示,CPU 软中断高时无从排查 -
hide_userland_threads=0:Java/Python 多线程应用会拆成多个 LWP(轻量级进程),关了就只看到主线程,内存/CPU 占用严重低估 - 在
Screens→Available columns中勾选IO_READ_RATE和IO_WRITE_RATE:否则 I/O 密集型进程(如数据库导入、日志轮转)看起来 CPU 很低,实际正疯狂刷盘
改完按 F10 保存,配置会写入 ~/.config/htop/htoprc,下次启动自动生效。
别只盯着 %CPU 和 %MEM —— 看 TIME+ 和 VIRT/RES 的比值
这两个字段暴露的是“时间消耗”和“内存真实性”,比百分比更反映真实负载:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
-
TIME+是进程自启动以来占用 CPU 的总时间(单位:十分之一秒)。值极大(比如几百万)但%CPU很低,说明是短时爆发型任务(如 cron 脚本),不是持续瓶颈;反之若TIME+增长缓慢但%CPU长期 90%+,才是真热点 -
VIRT是虚拟内存总量(含 mmap 映射、swap、共享库),RES是实际驻留物理内存。如果VIRT是RES的 5 倍以上(如VIRT=2.1G,RES=380M),大概率是 Java 应用设置了大堆但没用满,不用慌;但如果RES持续逼近物理内存上限,而SWAP区开始上涨,就得立刻干预
排序时用 F6 → 选 TIME+ 或 RES,比单纯按 %CPU 更准。
F4 过滤比 F3 搜索更实用,但要注意通配符陷阱
F3 是精确字符串匹配(类似 grep -F),F4 支持简单通配,更适合运维场景:
- 查所有 Python 进程:
F4输入python→ 匹配python3.9、gunicorn: python,但不会匹配ipython(除非你输py.*on) - 查特定用户 + 关键字:
F4输nginx后,再按u键输入www-data,只留该用户下的 nginx 工作进程 - 陷阱:输入
java会同时匹配javac和java进程,但javac是编译器,通常瞬时存在。应输java -jar或java.*-Xmx(需确认你的 htop 版本支持正则,3.0.5+ 可用)
过滤后界面左上角会显示当前条件,按 ESC 可一键清空回到全量视图。
真正容易被忽略的,是 htop 不显示的信息:它不反映磁盘延迟(需 iotop)、不体现网络连接数(需 ss -s)、也不展示 cgroup 限制(容器场景下 %CPU 可能被 capped 却看不出)。把 htop 当成第一眼仪表盘可以,但别让它成为唯一依据。










