理解如何读取和分析资源利用率是每位 Linux 用户的一项关键技能。许多人认为掌握命令行工具是从头开始学习 Linux 的最佳方式,因为它们能深入了解Linux 的工作原理。本课程将介绍 top,这是一个强大的实用工具,用于实时跟踪进程的活动。
理解 top 命令
我们之前简要提到了 top,但现在我们将深入研究它所显示内容的具体细节。top 命令为您提供机器上进程和系统利用率的动态、实时视图。
top - 18:06:26 up 6 days, 4:07, 2 users, load average: 0.92, 0.62, 0.59
Tasks: 389 total, 1 running, 387 sleeping, 0 stopped, 1 zombie
%Cpu(s): 1.8 us, 0.4 sy, 0.0 ni, 97.6 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 32870888 total, 27467976 used, 5402912 free, 518808 buffers
KiB Swap: 33480700 total, 39892 used, 33440808 free. 19454152 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6675 patty 20 0 1731472 520960 30876 S 8.3 1.6 160:24.79 chrome
6926 patty 20 0 935888 163456 25576 S 4.3 0.5 5:28.13 chrome
我们来解释一下这个输出的含义。您不必记住所有内容,但可以将本课程用作参考。
系统摘要
前几行提供了系统状态的高级摘要。
- 第 1 行:这与您运行
uptime命令时看到的信息相同。它显示当前时间、系统正常运行时间、登录用户数以及过去 1、5 和 15 分钟的系统负载平均值。 - 第 2 行:所有任务(进程)的摘要,分类为运行中、休眠中、已停止或僵尸进程。
CPU 使用率细分
第三行详细说明了 CPU 利用率。
us:用户进程(未被 nice 化的)运行所花费的 CPU 时间百分比。sy:内核及其进程运行所花费的 CPU 时间百分比。ni:被 nice 化(低优先级)的用户进程运行所花费的 CPU 时间百分比。id:空闲的 CPU 时间百分比。wa:等待 I/O 操作完成所花费的 CPU 时间百分比。高值可能表明存在磁盘或网络瓶颈。hi:处理硬件中断所花费的 CPU 时间百分比。si:处理软件中断所花费的 CPU 时间百分比。st:窃取时间。在虚拟化环境中,这是虚拟 CPU 在等待真实 CPU 时所花费的 CPU 时间百分比,此时管理程序正在为另一个虚拟处理器服务。
内存和交换空间信息
第四行和第五行分别显示内存和交换空间的使用情况。这包括总量、已用量和可用量。
进程列表
top 的主体是资源消耗最多的进程列表。
PID:唯一的进程 ID。USER:拥有该进程的用户。PR:进程的调度优先级。NI:“nice”值,它会影响其优先级。VIRT:进程使用的虚拟内存。这是进程可以访问的内存总量。RES:进程使用的常驻内存。这是任务正在使用的、未被交换出去的物理内存。理解linux top virt res之间的区别是内存分析的关键。SHR:进程使用的共享内存。S:进程的状态:S=休眠,R=运行,Z=僵尸,D=不可中断睡眠,T=已停止。%CPU:自上次更新以来该进程使用的 CPU 时间百分比。%MEM:该进程使用的物理 RAM 百分比。TIME+:该进程自启动以来使用的总 CPU 时间。COMMAND:启动该进程的命令名称或命令行。
您还可以通过其 ID 监控特定进程,这对于有针对性的故障排除非常有用:
top -p 1