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

Linux htop 详细使用教程:系统资源监控与排障实战
Linux htop 详细使用教程系统资源监控与排障实战适用对象Linux 服务器运维人员、开发者、初学 Linux 的用户。适用场景服务器卡顿、排查 CPU/内存异常进程、强制关闭卡死的程序。htop是 Linux 系统下的一款交互式进程查看器你可以把它理解为Linux 的任务管理器。相比于 Linux 自带的top命令htop拥有更友好的彩色界面、鼠标支持、以及更强大的交互功能如搜索、排序、树状图。一、 如何安装 htop大多数 Linux 发行版都可以通过包管理器轻松安装Debian / UbuntusudoaptupdatesudoaptinstallhtopCentOS / RHEL 7sudoyuminstallhtop安装完成后在终端输入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 Nice、F8 Nice调整进程的优先级修改 Nice 值。F9 Kill强制结束选中的进程杀进程主要用这个。F10 Quit退出htop。三、 进程列表表头列名全解析中间密密麻麻的列表是系统中正在运行的进程。以下是每一列表头的含义和重点关注指标表头名称英文全称含义详解排障注意PIDProcess ID进程编号。系统给每个运行的程序分配的唯一数字身份证。杀进程时需要用到它。USERUser运行该进程的用户。如果是root启动的进程通常权限极高。PRIPriority内核优先级。数值越大越容易抢到 CPU 资源。普通用户无需关注。NINice value用户可调整的优先级。范围-20到19。越低越优先。如果你想让某个后台任务别抢 CPU可以将它的 Nice 调高到19。VIRTVirtual Memory虚拟内存。进程向系统申请的所有虚存大小。⚠️ 极易误判这个数值通常非常大甚至超过物理内存这是一个很正常的“承诺值”不反映实际消耗。排障看内存时忽略此列RESResident Memory常驻内存/物理内存。该进程真正占用的物理内存大小。⚠️ 重要内存排障看这里如果RES远大于系统空闲内存说明内存要爆了。SHRShared Memory共享内存。与其他进程共享使用的内存如底层库。不需要重点查看。SStatus进程当前状态。常见的状态代码有⚠️ 重点关注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% 的一堆进程说明内存告急。TIMECPU Time该进程累计占用的 CPU 总时间。如果一个新启动的进程TIME 数值已经很大说明它 CPU 消耗极快。CommandCommand启动该进程的完整命令。比如/usr/sbin/sshd是开启 SSH 远程登录服务。四、 实际操作与排障技巧1. 瞬间找出是谁“吃”光了资源如何排序直接鼠标点击表头文字如CPU%或MEM%列表就会按该列从大到小或从小到大自动排序。替代方法选中某个进程后按F6选择你想要排序的列。2. 快速查找特定程序搜索 (F3)按下F3输入进程名比如python或docker按回车会高亮显示匹配的进程。继续按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列移出来方便长期观察。然后调整代码或升级服务器配置。六、 给初学者的补充建议在远程 SSH 终端中鼠标可能失效许多老旧的 SSH 客户端默认不支持鼠标。如果点击没反应你可以全部使用键盘操作方向键移动F3 搜索F9 杀进程。关于退出看完进程后千万别忘了按F10退出htop否则你的终端会一直卡在这个黑底白字的监控画面里。隐藏进程如果想要看到系统守护线程非用户级你可以按F2进入设置在 Display options 里勾选 “Hide kernel threads” 或 “Hide userland process threads” 让界面更清爽。希望这份教程能帮助您快速上手htop并在 Linux 排障时游刃有余