htop —— 交互式进程/线程资源总览(top 的现代化替代)
这个工具是做什么的
top 的增强版:同样一屏看整机 CPU/内存与各进程占用,但交互体验好得多——支持鼠标点击、颜色区分、树状视图、按任意列排序、直接搜索进程、F5 看父子关系。排查"哪个进程耗资源、线程树长什么样、CPU/内存颜色热力图"比 top 直观,是服务器上手最舒服的第一屏工具。
可以回答什么问题
| 问题 | 怎么用 |
|---|---|
| 哪个进程吃 CPU/内存最凶? | 直接点列头按 %CPU/MEM% 排序 |
| 进程的父子/线程关系是什么样? | F5 切树状视图(Tree View) |
| CPU 各核利用率分布如何? | 顶部每个核一根进度条,F2 可改成文本 |
| 想快速找到某个进程? | / 输入关键字过滤 |
| 只想看某个用户的进程? | F4 按用户过滤(u) |
| 线程级 CPU 占用? | H 切换是否显示线程(F2 里 Setup→Display options→"Hide userland process threads") |
| 进程命令行过长看不全? | F2 → Display options → "Tree view is always sorted";c 显示完整命令 |
数据来源
- 来源文件:与 top 同源——整机 CPU 取自
/proc/stat;每个进程/线程取自/proc/<pid>/stat、/proc/<pid>/status;内存取自/proc/meminfo;负载取自/proc/loadavg。 - 采集方式:与 top 相同的"读
/proc累计值做差"模式,默认每 1 秒(可调-d)刷新一次。 - 由此决定的特性:
htop进程号是htop 自己分配的序号(PID列旁的PID是真实 PID,列表序号不是),别把左边第一列数字当 PID 用;第一屏%CPU同样有"开机累计值"不准的问题,看第二屏起。
一、启动参数
bash
htop # 启动(默认 1 秒刷新)
htop -d 5 # -d 刷新间隔秒
htop -u <user> # 只显示指定用户
htop -p <PID1>,<PID2> # 只显示指定进程
htop -t # 启动即树状视图
htop --sort-key=PERCENT_CPU # 启动即按 CPU 排序二、顶部指标区
text
CPU[||||||||||| 25.0%] Mem[||||||||||||||||| 1.02G/15.5G] Swp[ 0K/2.00G]
Tasks: 126, 5 thr; 1 running
Load average: 0.52 0.48 0.40| 指标 | 含义 | 判读 |
|---|---|---|
| CPU 进度条 | 每核一根,% 颜色区分(用户态/内核态/软中断等) | 单核持续 100% = 该核瓶颈 |
| Mem 进度条 | 物理内存使用(含 buff/cache) | 关注 available 附近是否有绿色(可用内存) |
| Swp 进度条 | swap 使用 | 持续增长 = 内存不足信号 |
| Load average | 1/5/15 分钟平均负载 | > 核数且持续 = 排队 |
三、常用交互键
| 键 | 功能 |
|---|---|
F5 / t | 树状视图(父子/线程层级) |
F6 / > < | 选择排序列 |
/ | 搜索进程 |
F4 / u | 按用户过滤 |
F9 / k | 向进程发信号(kill) |
F3 / - + | 搜索上一个/下一个 |
c | 显示完整命令行 |
H | 切换线程显示 |
P M T | 按 CPU/内存/时间排序(旧版快捷键) |
四、与 top 的取舍
| 维度 | top | htop |
|---|---|---|
| 安装 | 系统自带(procps-ng) | 需额外安装 |
| 交互 | 键盘单键 | 鼠标+键盘,更直观 |
| 树状视图 | 无 | 有(F5) |
| 脚本化 | -b -n 批处理强 | 较弱(也有 -t 文本模式) |
| 资源占用 | 极低 | 略高(可忽略) |
| 适用 | 服务器最保守环境、脚本采集 | 日常交互排查首选 |
一句话总结:htop 是 top 的"可视化升级版",交互排查用 htop,脚本采集用 top
-b -n 1——两个都装,各取所长。