当前位置:首页>Linux>Linux 系统运维工程师必备工具箱(第3篇)之性能监控工具对比:top vs htop vs glances

Linux 系统运维工程师必备工具箱(第3篇)之性能监控工具对比:top vs htop vs glances

  • 2026-10-11 08:35:57
Linux 系统运维工程师必备工具箱(第3篇)之性能监控工具对比:top vs htop vs glances

分享三位我工具箱里的“老伙计”:top、htop 和 glances。它们各有千秋,在不同的场景下扮演着关键角色。

一、 经典基石:top

top 是 Linux 系统监控的“开山鼻祖”,几乎存在于所有发行版中。它的强大之处在于其普适性和稳定性。当你 SSH 登录到一台陌生的、设置最简单的服务器时,top 几乎是你唯一可以确信存在的实时监控工具。

我的常用命令与交互操作:

启动 top 后,其界面分为系统概览和进程列表。我习惯先关注几个关键指标:

  1. 负载平均值(load average):三个数值分别代表过去1、5、15分钟的系统平均负载。这是一个宏观健康度指标。
  2. CPU 使用率(%Cpu(s)):这里细分为用户态(us)、系统态(sy)、空闲(id)等。如果 wa(I/O 等待)持续偏高,往往意味着磁盘可能成为瓶颈。
  3. 内存与交换空间(MiB Mem/Swap):关注 used 和 avail。交换空间(swap)如果被频繁使用,说明物理内存已紧张。

在进程列表中,默认按 CPU 使用率排序。我常用的一些交互命令:

  • P:按 CPU 使用率排序(默认)。
  • M:按内存使用率排序。查找内存消耗大户时非常有用。
  • k:结束指定 PID 的进程。需要输入进程号。
  • 1:展开显示所有逻辑 CPU 核心的使用情况,而不是一个汇总。
  • Shift + f:进入字段管理,可以自定义显示哪些列以及排序依据。比如,我可以增加 PPID(父进程ID)或 CODE(内存代码段大小)列。

设置点滴: 虽然 top 本身设置不多,但可以通过 ~/.toprc 文件保存个人设置。比如,我将默认刷新间隔设置为2秒,并固定了显示的列:

$ cat ~/.toprc
RCfile for "top with windows"       # shameless braggin'
Id:a, Mode_altscr=0, Mode_irixps=1, Delay_time=2.0, Curwin=0
Def     fieldscur=AEHIOQTWKNMbcdfgjplrsuvyzX
        winflags=32569, sortindx=0, maxtasks=0
        summclr=1, msgsclr=1, headclr=3, taskclr=1

这个设置是通过在 top 运行时按 Shift + W 保存生成的。

适用场景:

  • 紧急情况下的初步诊断。
  • 环境受限,只有最基本工具可用时。
  • 编写脚本时,因其输出格式相对稳定,便于用 awk、grep 解析。

二、 直观高效:htop

如果说 top 是可靠的“老爷车”,那 htop 就是配备了全液晶仪表盘的“现代座驾”。它提供了彩色界面、更直观的横向柱状图,并全面支持鼠标操作,大大提升了交互体验。

我的常用操作:

htop 开箱即用,界面信息量更丰富:

  1. CPU、内存、交换空间使用率 以彩色进度条显示,一目了然。
  2. 可以直接用鼠标点击表头进行排序,点击进程选择操作。
  3. 树状视图(按 F5)可以清晰展示进程父子关系,对于分析由某个父进程派生出的整个进程组非常方便。

强大的交互与过滤:

  • F3 或 /:搜索进程。输入进程名的一部分即可快速定位。
  • F4:过滤进程。比如输入 java 只显示所有 Java 进程,这在复杂的 Java 应用服务器上排查问题时极其高效。
  • F9:发送信号。选中进程后按 F9,会弹出信号列表(如 TERM, KILL, HUP等),用方向键选择即可,比 top 的 k 命令更直观防护。
  • F2:进入设置界面。这里可以灵活设置显示哪些仪表、列及其颜色。我通常会添加“IO 读取速率”和“IO 写入速率”列,以便观察磁盘 I/O 密集型进程。

设置示例: htop 的设置保存在 ~/.config/htop/htoprc。一个实用的设置是启用“详细CPU时间”和调整颜色方案,让不同状态的进程更易区分。

适用场景:

  • 日常交互式监控和问题排查的首选。
  • 需要快速理解进程间关系时。
  • 当需要频繁进行进程查找、过滤和操作时。

三、 全景仪表盘:glances

glances 是一位“全能型选手”。它在一个屏幕上集成了几乎所有的系统关键指标,并具备 C/S 模式和 Web 模式,堪称监控仪表盘的集大成者。

核心特性与使用:

安装 glances 后,直接运行 glances,你会看到一个信息密度极高的界面,通常包括:

  • 系统信息:主机名、系统类型、运行时间。
  • CPU、每个核心、负载。
  • 内存、交换空间。
  • 网络 I/O:分接口显示发送/接收速率,对于排查网络流量异常至关重要。
  • 磁盘 I/O:分设备显示读写速率。
  • 文件系统:各挂载点的使用率。
  • 传感器:CPU 温度等(如果支持)。
  • 进程列表:同样支持排序和基本操作。

高级功能:

  1. 客户端/服务器模式:这是 glances 的一大亮点。在一台机器上启动服务端:glances -s -B 0.0.0.0,然后在另一台机器上用 glances -c <服务器IP> 连接。这为集中查看多台服务器状态提供了轻量级方案。
  2. Web 服务器模式:运行 glances -w,即可通过浏览器访问 http://<主机>:61208 查看监控页面,非常适合在桌面浏览器上常开一个监控窗口。
  3. 导出数据:glances 可以将数据导出到多种外部系统,如 CSV、InfluxDB、Prometheus 等,便于集成到更庞大的监控体系中。比如,输出为 CSV 格式:glances --export csv --export-csv-file /tmp/glances.csv。
  4. 告警机制:glances 内置了阈值告警功能,当 CPU、内存、磁盘等使用率超过预设阈值时,相关数值会以红色高亮显示,非常醒目。

适用场景:

  • 需要快速获得系统全方位健康状态概览时。
  • 临时搭建一个轻量级的集中监控视图。
  • 将数据导出到其他监控或分析平台。

总结与选择建议

经过多年的实践,我对这三款工具形成了这样的使用习惯:

  • 求稳与通用,首选 top。它是我的“保底”工具,任何环境下都能用,脚本化能力强。
  • 交互与排查,深爱 htop。它是我日常在终端里使用频率最高的工具,直观的界面和强大的过滤功能让问题定位事半功倍。
  • 全景与集成,青睐 glances。当我想一眼看清系统的所有关键指标,或者需要快速建立一个临时监控点时,glances 是不二之选。

它们并非相互替代,而是相辅相成。一个成熟的运维工程师,应当根据具体场景灵活切换。比如,我可能先用 glances 发现某台服务器网络流量异常,然后通过 htop 的过滤功能快速定位到产生流量的具体进程,最后如果需要写一个监控脚本,则用 top 的命令行输出来提取关键指标。

工具的价值,最终在于使用它的人。希望我的这些经验分享,能帮助你在运维道路上,更从容地驾驭系统性能的波澜起伏。记住,最好的工具,永远是那个你最熟悉、最能解决当下问题的工具。

👨‍💻 运维老兵经

如果喜欢,点个「在看」分享给朋友吧。

最新文章

随机文章