进程监控工具——htop

1、什么是 htop

htop 是一款交互式进程查看器,作为经典 top 命令的现代化替代品。

top 是 Linux 自带,但界面简陋、操作不友好;htop 用彩色界面、鼠标支持、快捷键、横向滚动查看长命令行,能直观看到 CPU / 内存负载、进程树,适合快速定位 CPU 打满、内存泄漏、僵死进程。

1.1、htop的核心特点:

  • 彩色可视化,CPU 多核分栏展示
  • 支持鼠标点击操作
  • 进程树视图,快速看父子进程关系
  • 支持横向滚动,完整显示超长命令
  • 快捷键丰富,支持直接 kill 进程、调整 nice 值
  • 可排序、过滤进程

2、界面分区详解

打开 htop 后界面分为 3 大块:顶部资源栏、进程列表、底部快捷键栏

2.1、顶部资源区

  • CPU[0..N]:每个核心占用率,不同颜色含义
    • 绿色:用户态 CPU
    • 红色:内核态 CPU
    • 蓝色:低优先级 (nice) 进程
    • 橙色:等待 IO(IO Wait,IO 瓶颈重点看这个)
  • Mem:内存使用,绿色为已用内存,蓝色 buffer,橙色 cache
  • Swp:交换分区使用量
  • 右侧:任务数 Tasks、负载 Load average、系统运行时间 Uptime

2.2、进程列表字段

列名 含义
PID 进程 ID
USER 进程所属用户
PRI 内核优先级
NI Nice 值,范围 -20~19;数值越小优先级越高
VIRT 虚拟内存
RES 物理内存(常驻内存,最常用)
SHR 共享内存
S 进程状态:R 运行 / S 睡眠 / Z 僵尸
CPU% CPU 占用百分比
MEM% 内存占用百分比
TIME+ 累计 CPU 运行时间
COMMAND 启动命令

2.3、底部快捷键栏

F1帮助 F2设置 F3搜索 F4过滤 F5进程树 F6排序 F7降nice F8升nice F9kill F10退出

3、常用快捷键(最核心)

快捷键 功能
F1 / h 打开帮助文档
F2 / S 设置界面,修改颜色、显示列
F3 / / 搜索进程,输入关键词高亮匹配进程
F4 过滤器,只显示匹配关键词的进程(区别 F3:过滤,不是单纯高亮)
F5 切换进程树模式,查看父子进程,排查 fork 程序非常有用
F6 选择排序字段(CPU% / MEM% / PID / TIME+)
F7 减少 nice 值,提升进程优先级(需要 root)
F8 增加 nice 值,降低进程优先级
F9 给选中进程发送信号(SIGTERM/SIGKILL 等,kill 进程)
F10 / q 退出 htop
空格 标记选中进程,可以批量操作
u 按用户过滤,只看某个用户进程
H 隐藏线程,只显示主进程(嵌入式 / 多线程程序必用)
M 按内存占用排序(大写 M)
P 按 CPU 占用排序(大写 P)
T 按时间 TIME + 排序

小提示:鼠标可以直接点击表头排序,点击进程选中。

4、实战常用操作

4.1、 查看占用 CPU 最高的进程

启动 htop,按大写P,列表按 CPU% 降序排列。

4.2、查看内存占用最高进程

大写M,按内存 RES 降序,排查内存泄漏。

4.3、 进程树查看父子关系

F5,展开进程树,能看到哪个父进程创建子进程,定位后台 fork、僵尸进程。

4.4、 过滤进程(只看指定程序)

按 F4,输入进程名,例如 nginx、python3,列表只保留匹配进程;按 ESC 取消过滤。

4.5、 杀掉异常进程

方向键选中进程,F9,选择信号:

  • SIGTERM(15):优雅退出,优先使用
  • SIGKILL(9):强制杀死,进程无法捕获信号,无法清理资源,慎用

4.6、 隐藏线程(多线程程序,减少刷屏)

很多 C++/ 多线程程序会产生大量轻量级线程,htop 默认全部展示,按H隐藏线程,只显示主线程。

4.7、 修改进程优先级 (nice)

选中进程,F7 提高优先级(需要 root),F8 降低优先级。

5、常用启动参数

复制代码
# 只监控指定PID
htop -p 1234
# 只看指定用户的进程
htop -u root
# 不显示线程
htop -H
# 单色模式(老终端不支持彩色时使用)
htop -C

6、htop vs top 对比

特性 htop top
界面 彩色,布局友好 黑白,简陋
鼠标 支持 不支持
进程树 F5 一键切换 需要按V,展示差
长命令 横向滚动完整查看 截断
排序操作 快捷键丰富 操作繁琐
预装 大部分 Linux 不自带 Linux 默认自带

7、常见问题与排查技巧

  1. CPU 高,但 CPU 颜色大部分是红色 (内核态)
    程序在内核态消耗 CPU,大概率系统调用频繁、驱动异常。
  2. CPU 高,大量橙色 iowait
    不是程序 CPU 计算问题,是磁盘 IO 瓶颈,需要搭配iostat进一步排查。
  3. 看到 Z 状态僵尸进程
    僵尸进程本身不占 CPU 内存,是父进程没有 wait 回收子进程,需要修复父进程代码;杀死父进程一般可清理僵尸。
  4. htop 看不到完整进程命令
    左右方向键横向滚动,或者放大终端窗口。

8、总结

htop 是 Linux 性能调试的入门利器,替代 top 做日常监控。

日常排查流程推荐:

  1. htop 打开,看 CPU / 内存整体状态
  2. P/M 排序找到占用高进程
  3. F5 打开进程树看父子关系
  4. F4 过滤进程,H 隐藏多余线程
  5. 必要时 F9 发送信号终止异常进程
相关推荐
丰锋ff11 小时前
压缩命令笔记
linux
江华森11 小时前
数据中心基础设施运维实战:概述与实验环境搭建
运维
迪菲赫尔曼12 小时前
【基础篇 11】把官方源码放到服务器:版本、解压层级和安装位置,一次弄清楚
运维·服务器·开发语言·人工智能·python·yolo·目标检测
GeW13 小时前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
by2099913 小时前
Linux GCC/G++ 编译与 Makefile 构建
linux·运维·服务器·经验分享
螺丝钉tina13 小时前
[Playwright][08] Upload 模块自动化:如何设计真实业务测试用例?
运维·自动化·测试用例
迪菲赫尔曼13 小时前
【基础篇 12】把环境与源码接起来:检查 GPU,再安装服务器上的项目
运维·服务器·开发语言·人工智能·python·yolo·目标检测
cq林志炫14 小时前
两个Linux服务器之间同步文件
linux·运维·服务器
yyuuuzz14 小时前
云服务器安全组规则优先级的机制记录
运维·服务器·网络·安全·阿里云·aws
KaiwuDB14 小时前
KaiwuDB 运维实战06:数据库备份与恢复:从理论到实战
运维·数据库·时序数据库·kaiwudb