top 命令解析

top

top 可用于实时查看系统的运行状态,包括 CPU 使用率、内存使用情况、正在运行的进程等。

top 命令输出的主要部分介绍

顶部行

顶部行为输出的第一行,如下图:

top - 06:19:19 up 14 min,  1 user,  load average: 0.01, 0.08, 0.08

各参数释义如下:

  • top - 06:19:19: top 命令的启动时间,即我是在早上 06:19:19 开始运行 top 命令的
  • up 14 min: 表示系统已经运行了 14 分钟
  • 1 user: 表示当前有一个用户登录到系统
  • load average 0.01, 0.08, 0.08: 系统的平均负载值。 它给出了系统在过去 1 分钟、5 分钟和 15 分钟内的平均负载

关于平均负载 (load average)
负载平均值是系统中正在运行和等待 CPU 时间的进程数的平均值。在单 CPU 系统中,负载平均值为 1.00 表示 CPU 在过去那个时间段内是完全忙碌的;如果负载平均值为 2.00,则表示 CPU 在那个时间段内几乎两倍于它的能力在工作(或者说有 50% 的时间是空闲的,但有两个进程在争用 CPU)。
在多核或多处理器系统中,这个数字需要乘以 CPU 的数量才能得到实际的负载情况。例如,在一个四核系统上,负载平均值为 4.00 实际上表示 CPU 正好完全忙碌。

任务行

上图中是在刚启动 linux ,并无进程运行的情况下执行的 top,故无任务行,采用其它有跑任务的虚拟机的 top 输出作为示例,如下图:

Tasks: 164 total,   1 running,  163 sleeping,   0 stopped,  0 zombie

各参数释义如下:

  • Task: 164 total: 这表示系统中共有 164 个任务(或进程)
  • 1 running: 当前有 1 个进程正在运行(占用 CPU 时间)
  • 163 sleeping: 有 163 个进程处于睡眠状态(等待某个条件发生,如 I/O 操作完成)
  • 0 stopped: 没有进程处于停止状态(通常是由于接收到 SIGSTOP 信号)
  • 0 zombie: 没有僵尸进程(已经终止但父进程尚未读取其终止状态的进程)

系统中进程的不同状态
Running: 进程正在使用 CPU
Sleeping: 进程在等待某个条件发送,如 I/O 操作完成或等待某个信号
Stopped: 进程接收到 SIGSTOP 信号并被停止。这通常是由于用户或管理员的干预,比如使用 Ctrl + Zkill -STOP 命令
Zombie: 进程已经终止,但父进程尚未读取其终止状态。这通常是一个短暂的状态,因为父进程通常会很快读取其终止状态并释放僵尸进程占用的资源。如果系统中存在大量僵尸进程,可能是某个父进程有问题或父进程没有正确管理其子进程。

系统中有大量的进程处于睡眠状态,这是正常的,因为很多进程(如网络服务、数据库进程、守护进程等)在大部分时间都是等待状态,等待用户请求或系统事件。

CPU 行

本行介绍的是 CPU 的使用情况。

%Cpu(s):  0.7 us,  0.7 sy,  0.0 ni, 98.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

各参数释义如下:

  • 0.7 us: 用户空间占用 CPU 的百分比,即运行在用户模式下的非内核代码所占用的 CPU 时间
  • 0.7 sy: 系统(内核)空间占用 CPU 的百分比,即运行在系统模式(内核态)下的代码所占用的 CPU 时间
  • 0.0 ni: 用户进程空间内改变过优先级的进程占用 CPU 的百分比,即 nice 值为负的进程所占用的 CPU 时间(nice 值可以调整进程的优先级)
  • 98.5 id: 空闲 CPU 的百分比,即 CPU 在这段时间内没有执行任何指令的百分比
  • 0.0 hi: 硬中断(Hardware Interrupts)服务占用的 CPU 时间百分比
  • 0.0 si: 软中断(Software Interrupts)服务占用的 CPU 时间百分比
  • 0.0 st: 虚拟机(Virtualization Technology)偷走的 CPU 时间百分比,即在虚拟化环境中,虚拟机管理程序(如 KVM)使用的 CPU 时间。

在上面的举例中,可看到大部分时间(98.5%)CPU都是空闲的,只有很少的时间(0.7%)用于用户空间(user space)和系统空间(system space)的计算。这意味着系统当前的负载很低,CPU 有大量的空闲时间。其它的 CPU 实用率字段(如等待 I/O、硬中断、软中断和虚拟机偷走的时间)都非常低。

内存行

本行介绍了内存的适用情况

MiB Mem :   3876.5 total,    639.2 free,   1181.0 used,   2056.3 buff/cache

各参数释义如下:

  • MiB Mem: 这表明以下的数值是以 Mib (兆字节) 为单位的内存使用情况
  • 3876.5 total: 系统上总的物理内存是 3876.5 MiB
  • 639.2 free: 当前空闲的、未被使用的物理内存是 639.2 MiB
  • 1181.0 used: 当前被进程占用的物理内存是 1181.0 MiB。这通常包括应用程序、操作系统内核和其它运行中的进程所使用的内存
  • 2056.3 buff/cache: 这部分内存被用作文件系统和内核缓冲区以及缓存。虽然这部分内存被标记为 "已使用",但它实际上是可以在需要时快速释放给应用程序的,因为它主要存储的是可以重新从磁盘或其它来源获取的数据。因此,这部分内存实际上是 "可用" 的,只是在短期内被用来提高系统性能

为了更准确地了解系统上的内存使用情况,可以将 freebuff/cache 的值相加(639.2 + 2056.3),者通常会给出一个更大的 "实际可用" 内存数,因为当应用程序需要更多内存时,系统通常会先尝试从缓冲区/缓存中释放内存,而不是立即使用交换空间(如果配置了的话)

所以,在上面所给的例子中,尽管 used 的值是 1181.0 MiB,但考虑到缓冲区/缓存中的内存实际上是可以快速释放的,系统实际上还有相当多的可用内存。

交换空间

交换空间是当物理内存(RAM)不足时,系统用于扩展内存的一种方式。它将部分内存中的数据转移到磁盘上的交换空间中,从而释放物理内存供其他进程使用。

各参数释义如下:

  • Total:2048.0 MiB: 总交换空间为 2048.0 兆字节
  • Free:2047.2 MiB: 当前空闲的交换空间为 2047.2 兆字节
  • Used:0.8 MiB: 已使用的交换空间为 0.8 兆字节
  • Avail Mem:2411.6 MiB: 当前系统可用的内存总量为 2411.6 兆字节

Avail Mem 通常表示在考虑了交换空间和其他因素后,系统可以立即分配给进程的内存总量。它包括了空闲的内存、缓冲和缓存中的部分内存(如果系统需要的话,可以从缓冲和缓存中回收内存供其他进程使用)。

进程列表

在顶部的基础使用情况列出后,会详细列出各个进程的信息。如下图所示:

 进程号 USER      PR  NI    VIRT    RES    SHR    %CPU  %MEM     TIME+ COMMAND                                                                                
   1627 h47       20   0  358728  85640  40788 S   5.9   2.2   0:07.24 Xorg                                                                                   
   2241 h47       20   0  902068  63848  46716 S   5.9   1.6   0:02.16 gnome-terminal-                                                                        
      1 root      20   0  168424  11752   8460 S   0.0   0.3   0:02.13 systemd                                                                                
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.04 kthreadd                                                                               
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp                                                                                 
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp                                                                             
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 slub_flushwq

各参数释义如下:

  • PID: 进程 ID
  • USER: 进程所有者
  • PR: 优先级
  • NI: nice 值
  • VIRT: 虚拟内存大小
  • RES: 常驻集大小,即物理内存大小
  • SHR: 共享内存大小
  • S: 进程状态
  • %CPU: CPU 使用率
  • %MEM: 内存使用率
  • TIME+: CPU 时间累计
  • COMMAND: 命令名称或命令行

使用方式

top 的使用方式 top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

参数 含义
-d delay delay代表秒数,表示top命令显示的页面更新一次的间隔(default=5s)
-b 以批次的方式执行top
-p -p pid 仅显示指定进程 ID 的信息
-u -u username 仅显示指定用户名的进程信息
-S 累计显示进程的 CPU 使用时间
-c 显示完整的命令行而不截断
-i 不显示闲置(idle)或无用的进程
-H 在进程信息中显示线程的详细信息
-n -b配合使用,表示需要进行几次top命令的输出结果
-p 指定特定的pid进程号进行观察

top 命令显示的页面还可以输入以下按键执行相应的功能(注意区分大小写)

参数 含义
? 显示在top页面中可以输入的命令
P 以 CPU 的使用资源排序显示
M 以内存的使用资源排序显示
N 以 PID 排序显示
T 由进程使用的时间累计排序显示
k 给某一个 pid 一个信号,可以用来杀死进程(9)
r 给某个 pid 重新定制一个 nice 值(即优先级)
q 退出 top (用 ctrl + c 也可以退出 top)
posted @   功夫在诗外  阅读(2000)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示