htop —— 可视化的进程与资源查看器

运维工具手册 01-系统监控与性能 3.4 KB 原文

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. 常见坑

  1. htop 不显示 IO 列:2.x 需在 Setup 里手动加 IO_READ_RATE/IO_WRITE_RATE;3.x 默认可能隐藏,F2 → Columns 打开。
  2. 容器里看到宿主机全部进程:与 top 同理,需 lxcfs 才能看到容器视角。
  3. 颜色错乱 / 乱码:终端 TERM 不对,用 htop -C 或 export TERM=xterm-256color。
  4. 3.x 与 2.x 快捷键有差异:网上教程多为 2.x,F2 结构在 3.x 完全重做(Main / Display options / Header layout / Meters / Colors)。
  5. 不能直接用于监控采集:没有稳定的机器可读输出,要采集用 ps//proc。
  6. CentOS 7 的 EPEL 版本较老(2.2.0),没有 e/l/s 等 3.x 功能。
  7. 杀进程后立刻消失又出现:被 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 隐藏内核线程
htop —— 可视化的进程与资源查看器 - 知识库 - 起航社区