Linux htop 详细使用教程:系统资源监控与排障实战

适用对象:Linux 服务器运维人员、开发者、初学 Linux 的用户。
适用场景:服务器卡顿、排查 CPU/内存异常进程、强制关闭卡死的程序。

htop 是 Linux 系统下的一款交互式进程查看器,你可以把它理解为 Linux 的任务管理器。相比于 Linux 自带的 top 命令,htop 拥有更友好的彩色界面、鼠标支持、以及更强大的交互功能(如搜索、排序、树状图)。


一、 如何安装 htop

大多数 Linux 发行版都可以通过包管理器轻松安装:

  • Debian / Ubuntu:
    sudo apt update
    sudo apt install htop
    
  • CentOS / RHEL 7+:
    sudo yum install htop
    

安装完成后,在终端输入 htop 即可启动。


二、 界面概览(分区域详解)

启动 htop 后,界面会分为三个主要区域:

在这里插入图片描述

1. 顶部状态栏(系统资源概况)

  • CPU 核心 (0[…]):显示每个 CPU 逻辑核心的使用率。彩色线条代表负载,空心部分代表空闲。如果满屏都是实心条,说明 CPU 跑满了。
  • Load average (系统负载):从左到右分别代表 过去 1分钟、5分钟、15分钟 的平均负载。
    • 排障参考:如果这个数值持续超过你机器 CPU 的总核心数(比如 4 核机器负载 > 4.0),说明系统处理不过来请求,处于拥堵状态。
  • Uptime (运行时间):机器自启动以来运行了多久(例如截图中的 00:16:01 表示才开机 16分钟)。
  • Mem (物理内存):真实物理内存的总量、使用量、空闲量。内存不足时,这里是第一排查重点。
  • Swp (交换分区):硬盘模拟的内存。如果 Swp 大量使用,说明物理内存已经耗尽,系统在依赖硬盘当内存,这时系统会非常卡。

2. 底部菜单栏(键盘快捷键)

底部列出了 F1-F10 对应的功能,这是 htop 的交互核心:

  • F1 Help:查看帮助文档。
  • F2 Setup:设置界面,可以更改颜色、显示的列、栏位顺序等。
  • F3 Search搜索进程(按名称或 PID)。
  • F4 Filter过滤进程(只显示包含该关键字的进程)。
  • F5 Tree:切换为树状图显示,清晰展示父子进程关系。
  • F6 SortBy:按某一列(如 CPU、内存)排序
  • F7 NiceF8 Nice:调整进程的优先级(修改 Nice 值)。
  • F9 Kill强制结束选中的进程(杀进程主要用这个)。
  • F10 Quit:退出 htop

三、 进程列表表头(列名)全解析

中间密密麻麻的列表是系统中正在运行的进程。以下是每一列表头的含义和重点关注指标:

表头名称 英文全称 含义详解 排障注意
PID Process ID 进程编号。系统给每个运行的程序分配的唯一数字身份证。 杀进程时需要用到它。
USER User 运行该进程的用户 如果是 root 启动的进程,通常权限极高。
PRI Priority 内核优先级。数值越大,越容易抢到 CPU 资源。 普通用户无需关注。
NI Nice value 用户可调整的优先级。范围 -20+19。越低越优先。 如果你想让某个后台任务别抢 CPU,可以将它的 Nice 调高到 19
VIRT Virtual Memory 虚拟内存。进程向系统申请的所有虚存大小。 ⚠️ 极易误判! 这个数值通常非常大(甚至超过物理内存),这是一个很正常的“承诺值”,不反映实际消耗。排障看内存时,忽略此列!
RES Resident Memory 常驻内存/物理内存。该进程真正占用的物理内存大小。 ⚠️ 重要!内存排障看这里! 如果 RES 远大于系统空闲内存,说明内存要爆了。
SHR Shared Memory 共享内存。与其他进程共享使用的内存(如底层库)。 不需要重点查看。
S Status 进程当前状态。常见的状态代码有: ⚠️ 重点关注!
R (Running):正在运行/在运行队列中。
S (Sleeping):可中断睡眠(最最常见,等待IO或事件)。
D (Disk Sleep):不可中断睡眠(等待硬盘读写)。
Z (Zombie):僵尸进程(进程结束但“遗骸”未被回收)。
T (Stopped):暂停/停止。
如果有大量 D 状态进程,说明硬盘读写卡死了,这类进程杀不掉,只能等IO恢复或重启服务器。
如果有大量 Z 状态进程,说明父进程有Bug。
CPU% CPU Percent 当前占用 CPU 的百分比 如果有进程长期保持 100%,说明 CPU 瓶颈。
MEM% Memory Percent 占用物理内存(RES)的百分比 如果占用高达 80%+ 的一堆进程,说明内存告急。
TIME+ CPU Time 该进程累计占用的 CPU 总时间 如果一个新启动的进程,TIME+ 数值已经很大,说明它 CPU 消耗极快。
Command Command 启动该进程的完整命令 比如 /usr/sbin/sshd 是开启 SSH 远程登录服务。

四、 实际操作与排障技巧

1. 瞬间找出是谁“吃”光了资源

  • 如何排序? 直接鼠标点击表头文字(如 CPU%MEM%),列表就会按该列从大到小(或从小到大)自动排序。
  • 替代方法: 选中某个进程后按 F6,选择你想要排序的列。

2. 快速查找特定程序

  • 搜索 (F3):按下 F3,输入进程名(比如 pythondocker),按回车,会高亮显示匹配的进程。继续按 F3 可跳转到下一个匹配项。
  • 过滤 (F4):按下 F4,输入关键字,只留下包含该关键字的进程。这在服务器进程非常多时非常有用。

3. 如何查看程序是由谁启动的(树状图)

  • 按下 F5,界面会切换到树状结构。你能清晰看到 systemd 启动了 sshd,然后 sshd 启动了 bash 这样的父子继承关系。在做复杂的祖孙进程分析时特别好用。

4. 强制结束卡死的进程(杀进程)

  • 步骤1:使用上下方向键选中那个卡死或异常的进程(比如 CPU 100% 的进程)。
  • 步骤2:按下 F9 键。
  • 步骤3:会出现一个选择信号弹窗。
    • 15 SIGTERM(默认):礼貌地请求进程关闭(让它保存好数据再关)。
    • 9 SIGKILL:强制立即杀死(类似于电脑死机时直接拔电源,进程数据会丢失,但一定能杀掉)。
  • 步骤4:按回车键执行。

(注:如果遇到状态是 D 的进程,按 9 也杀不死,只能等待或者重启机器)


五、 常见问题排障实战案例

案例 1:服务器响应极慢,CPU 占用 100%

  • 操作:打开 htop鼠标点击表头的 CPU% 使其降序排列。
  • 发现:PID 12345 的 Java 进程 CPU% 显示 150%(多核环境)。
  • 解决:选中该进程,按 F9,选择 9 SIGKILL 强制杀掉,临时释放 CPU。后续再排查 Java 代码问题。

案例 2:终端很卡,输入命令要过几秒才有反应

  • 操作:打开 htop,观察状态列(S)。
  • 发现:有 5-6 个进程状态都是 D
  • 解决:这说明你的服务器硬盘(磁盘 I/O)卡死了,操作系统一直在死命等待硬盘回执。这个状态下杀进程没用。需要检查是否有物理硬盘故障,或者是否有程序在疯狂往磁盘写日志导致 IO 阻塞。

案例 3:内存快要爆了,系统快崩溃了

  • 操作:打开 htop鼠标点击表头的 MEM% 使其降序排列。
  • 发现:排第一的是某个 Web 服务进程,占用了 8GB 内存。
  • 解决:直接按 F9 杀掉,或者按 F2 设置中把 RES 列移出来,方便长期观察。然后调整代码或升级服务器配置。

六、 给初学者的补充建议

  1. 在远程 SSH 终端中鼠标可能失效? 许多老旧的 SSH 客户端默认不支持鼠标。如果点击没反应,你可以全部使用键盘操作(方向键移动,F3 搜索,F9 杀进程)。
  2. 关于退出: 看完进程后,千万别忘了按 F10 退出 htop,否则你的终端会一直卡在这个黑底白字的监控画面里。
  3. 隐藏进程: 如果想要看到系统守护线程(非用户级),你可以按 F2 进入设置,在 Display options 里勾选 “Hide kernel threads” 或 “Hide userland process threads” 让界面更清爽。

希望这份教程能帮助您快速上手 htop,并在 Linux 排障时游刃有余!

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐