htop —— 可视化的进程与资源查看器
htop —— 可视化的进程与资源查看器
分类:01 系统监控与性能 适用:所有 Linux;htop 2.x(老发行版)/ 3.x(新发行版,界面分栏有变化) 一句话:top 的增强版,彩色、可鼠标、可树状、可横向滚动,交互体验更好。
1. 它解决什么问题
- 想在终端里像任务管理器一样直观地看 CPU 每核占用、内存分布。
- 想看进程树,快速定位"谁拉起了谁"。
- 想不查 PID 直接搜索、过滤、杀进程。
不适合:脚本化采集(输出格式不稳定),这种场景用 top -b 或 ps。
2. 安装
# Debian / Ubuntu
apt install -y htop
# RHEL / CentOS 7 需 EPEL
yum install -y epel-release && yum install -y htop
# CentOS 8+ / openEuler / Rocky
dnf install -y epel-release && dnf install -y htop
# Alpine
apk add htop
# 国产系统(麒麟/UOS)
apt install htop || dnf install htop
源码编译(目标机无网时):
dnf install -y ncurses-devel gcc make
curl -LO https://github.com/htop-dev/htop/releases/download/3.3.0/htop-3.3.0.tar.xz
tar -xf htop-3.3.0.tar.xz && cd htop-3.3.0
./configure --prefix=/usr/local && make -j"$(nproc)" && make install
3. 界面结构
1 [|||||| 32.5%] Tasks: 87, 213 thr; 2 running
2 [||| 8.1%] Load average: 0.82 1.35 2.10
Mem[||||||||||| 4.1G/15.5G] Uptime: 12 days, 03:07:22
Swp[ 0K/4.0G]
- 顶部:每个逻辑核一个进度条(htop 3.x 默认合并显示,
F2可改)。 - 中部:进程列表,默认按 CPU 降序。
- 底部:
F1~F10功能键。
htop 3.x 在 F2 → Header layout 里可把 CPU/内存/网络/磁盘分成多栏,比 2.x 信息更多。
4. 常用参数
htop # 启动
htop -u nginx # 只看某用户
htop -p 1234,5678 # 只看指定 PID
htop -d 10 # 刷新间隔 1 秒(单位 0.1 秒)
htop -t # 树状模式启动
htop -H # 显示线程
htop -C # 单色(终端配色异常时用)
htop --delay=5 # 3.x 写法
5. 关键交互
| 键 | 作用 | 备注 |
|---|---|---|
F3 / / |
搜索进程名 | 输入即过滤 |
F4 / \ |
过滤(Filter) | 只显示匹配项,Esc 清除 |
F5 / t |
树状视图 | 看父子关系最有用 |
F6 / > |
选择排序字段 | 可选 CPU、MEM、TIME、IO 等 |
F7 / F8 |
降低 / 提高 nice | 调优先级 |
F9 / k |
发送信号 | 列表里可选 SIGTERM/SIGKILL |
F2 / S |
Setup 设置 | 改显示列、颜色、表头 |
F10 / q |
退出 | |
u |
按用户筛选 | |
H |
线程开关 | 排查线程级 CPU 占用 |
K |
隐藏内核线程 | 界面更干净 |
Shift+M |
按内存排序 | 等价 F6 选 MEM |
Shift+P |
按 CPU 排序 | |
Shift+T |
按运行时间排序 | |
Space |
标记进程 | 可批量操作 |
e |
显示进程环境变量 | 3.x 支持,查启动参数很有用 |
l |
显示打开的文件(lsof) | 3.x |
s |
显示系统调用(strace) | 3.x,需权限 |
w |
显示命令行完整参数 | 3.x |
6. 实战场景
6.1 树状定位"谁拉起了这个进程"
htop -t
# 按 F3 搜 java → 按 F5 看树 → 看父进程是 systemd 还是某个 shell 脚本
这决定了你重启服务该 systemctl restart 还是改脚本。
6.2 线程级排查
htop -H -p <PID>
# 找到吃 CPU 的线程 TID,再:
printf '%x\n' <TID> # 转十六进制
jstack <PID> | grep -A 30 "nid=0x<hex>"
6.3 批量杀同一类进程
Space 标记多个 → F9 → 选信号,一次处理,比 pkill 更可控(能先看清是哪些)。
6.4 保存自定义布局
F2 调好显示列(比如只要 PID/USER/PRI/NI/VIRT/RES/S/CPU%/MEM%/TIME+/Command)→ F2 里 Done,配置存到 ~/.config/htop/htoprc,可随 dotfiles 分发。
7. 常见坑
- htop 不显示 IO 列:2.x 需在 Setup 里手动加
IO_READ_RATE/IO_WRITE_RATE;3.x 默认可能隐藏,F2 → Columns打开。 - 容器里看到宿主机全部进程:与 top 同理,需 lxcfs 才能看到容器视角。
- 颜色错乱 / 乱码:终端
TERM不对,用htop -C或export TERM=xterm-256color。 - 3.x 与 2.x 快捷键有差异:网上教程多为 2.x,
F2结构在 3.x 完全重做(Main / Display options / Header layout / Meters / Colors)。 - 不能直接用于监控采集:没有稳定的机器可读输出,要采集用
ps//proc。 - CentOS 7 的 EPEL 版本较老(2.2.0),没有
e/l/s等 3.x 功能。 - 杀进程后立刻消失又出现:被 systemd/supervisor 拉起了,先停服务单元。
8. 速查表
apt install htop || dnf install htop || apk add htop
htop -u <user> # 按用户
htop -p <pid> # 单进程
htop -t # 树状
htop -H # 线程
htop -d 10 # 1 秒刷新
htop -C # 单色
# 交互:F3 搜 / F4 过滤 / F5 树 / F6 排序 / F9 杀 / u 用户 / H 线程 / K 隐藏内核线程