Linux top命令 - 动态查看进程信息

一、显示信息介绍

top 命令是 Linux/Unix 系统中常用的进程监控工具,可以实时动态显示系统中各个进程的资源占用情况,包括CPU、内存等。

进入 linux 系统,直接输入 top,回车,就会显示如下所示的信息。下面详细介绍显示内容:

top命令显示分为上下两个部分:1. 上面是系统统计信息;2. 下面是进程信息。

1.1、第一行:时间上的统计

top - 14:11:06 up 4:02, 1 user, load average: 1.91, 2.28, 2.14

  • top - 14:11:06:表示当前系统的时间是14:11:06;
  • up 4:02:表示系统当前已经运行了4小时2分。
  • 1 user:表示当前登录系统的用户数为1。
  • load average: 1.91, 2.28, 2.14:系统负载信息,分别表示1分钟、5分钟和15分钟内的平均负载。负载值越高,表示系统资源被占用得越多。

一般来说,如果1分钟平均负载超过了系统逻辑 CPU 核心数,就说明系统存在性能瓶颈。

1.2、第二行:任务统计

Tasks: 390 total, 1 running, 389 sleeping, 0 stopped, 0 zombie

  • 390 total:表示系统中总共有 390 个进程或任务;
  • 1 running:表示有1个进程正在运行,占用 CPU 资源执行计算任务;(可运行状态)
  • 389 sleeping:表示有 389 个任务处于"不可中断睡眠"状态。(不可中断状态)
  • 0 stopped:表示当前系统中有0个进程处于"已停止"状态;
  • 0 zombie:表示僵尸进程数。僵尸进程是已经终止但父进程未对其进行资源回收的进程,这种进程不会占用系统资源,但会在进程表中保留相关信息。

1.3、第三行:CPU 统计

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

  • 0.4 us:“us” 代表用户模式 (user mode),用户空间占用CPU的百分比。表示有 0.4% 的 CPU 时间被用户进程所占用。
  • 1.4 sy:“sy” 代表系统模式 (system mode),内核空间占用CPU的百分比。表示有1.4% CPU 时间被内核进程所占用。
  • 0.0 ni:“ni” 代表 nice 值被改变的进程占用的 CPU 时间百分比,也就是改变过优先级的进程占用 CPU 的百分比。
  • 97.5 id:“id” 代表空闲 (idle),空闲 CPU 百分比。表示有 97.5% 的 CPU 时间处于空闲状态。
  • 0.0 wa:“wa” 代表等待输入/输出的 CPU 时间百分比,IO 等待占用 CPU 的百分比。
  • 0.0 hi:“hi” 代表硬中断 (hardware interrupt) 占用的 CPU 时间百分比。
  • 0.7 si:“si” 代表软中断 (software interrupt) 占用的 CPU 时间百分比。
  • 0.0 st:“st” 代表被虚拟机偷取的 CPU 时间百分比,这个指标主要针对运行在虚拟机上的系统而言。在虚拟化环境中,物理机的 CPU 资源是被分配给多个虚拟机使用的。当一个虚拟机暂时没有使用 CPU 时,可能会将这部分空闲的 CPU 时间分配给其他虚拟机使用,这个时间即为 “st” 部分;对于物理机或者没有运行在虚拟化环境中的系统来说,这个 “st” 指标通常都是 0.0,因为没有发生 CPU 时间被其他虚拟机偷走的情况。

1.4、第三行:内存统计

MiB Mem : 3898.0 total, 460.4 free, 1733.8 used, 2034.7 buff/cache

  • 3898.0 total:总物理内存。
  • 460.4 free:空闲内存。
  • 1733.8 used:已用内存。
  • 2034.7 buff/cache:可用于缓存的内存。
  • 页缓存用于缓存文件系统数据,缓冲区用于存储块设备的I/O数据。这部分内存在需要的时候可以很快地被释放回给应用程序使用。

1.5、第五行:swap交换分区信息统计

交换分区 (Swap) 是操作系统用来扩展内存容量的一种机制。当物理内存不足时,操作系统会将一些不常用的内存页面交换到 Swap 分区,即把一部分硬盘空间虚拟成内存使用。在内存不够的情况下,操作系统先把内存中暂时不用的数据存到硬盘的交换空间,从而解决内存容量不足的情况,为更重要的进程和数据腾出物理内存空间。

MiB Swap: 8192.0 total, 8043.1 free, 148.9 used. 2164.3 avail Mem

  • 8192.0 total:用于交换的总内存。表示系统中没有配置任何交换分区 (Swap) 空间;
  • 8043.1 free:空闲交换内存;
  • 148.9 used:已用交换内存;
  • 2164.3 avail Mem:可用物理内存。表示系统中还有 2164.3 Kib 的可用物理内存。

1.6、第六行:各进程状态监控

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

  • PID (Process ID):进程的唯一标识符;—— 可用于定位和管理特定的进程。
  • USER:运行该进程的用户(进程所有者);—— 可用于审查用户行为和进程权限。
  • PR (Priority):表示进程的调度优先级。数值越小,优先级越高;—— 可用于调整进程的重要性和CPU使用情况。
  • NI (Nice value):nice 值用于调整进程的调度优先级。一般情况下,nice 值越小,优先级越高;—— 可用于调整进程的优先级和资源共享。
  • VIRT (Virtual Memory Size):表示进程使用的虚拟内存大小;—— 可用于评估进程的内存需求。
  • RES (Resident Size):表示进程使用的物理内存大小;—— 可用于识别内存密集型进程。
  • (对于 Java 进程,包括 Java 堆、方法区、线程栈等 JVM 各个内存区域的总和。JVM 堆内存参数设置只是定义了 Java 堆的最小和最大值,并不等同于 RES 值。RES 值会随着 Java 应用程序的实际内存使用情况而动态变化。)
  • SHR (Shared Mem):表示进程使用的共享内存大小;—— 可用于优化内存使用。
  • S (Status):显示进程的状态,常见的状态有:R (Running) - 正在运行、S (Sleep) - 睡眠状态、D (Uninterruptible Sleep) - 不可中断的睡眠状态、Z (Zombie) - 僵尸进程、T=跟踪/停止;—— 可用于识别异常或未响应的进程。
  • %CPU:表示上次更新到现在进程使用的 CPU 时间占用百分比;—— 可用于识别CPU密集型进程。
  • %MEM:表示进程使用物理内存的占用百分比;—— 可用于识别内存密集型进程。
  • TIME+:表示进程运行使用的 CPU 时间累计,精确到百分之一秒(单位1/100秒);—— 可用于监控进程的执行时间和效率。
  • COMMAND:进程的命令名称。—— 可用于识别进程的功能和用途。

二、top命令使用

2.1、top 命令常用选项

选项     说明 举例
-d <秒数> 指定 top 命令的刷新时间间隔,单位为秒。 例如:top -d 5 每 5 秒更新一次信息
-n <次数> 指定 top 命令运行的次数后自动退出。 例如:top -n 10 将运行 10 次后退出。
-p <进程ID> 仅显示指定进程 ID 的信息。 例如:top -p 1234 只显示进程 ID 为 1234 的进程。
-u <用户名> 仅显示指定用户名的进程信息。 例如:top -u john 只显示用户为 “john” 的进程。
-H 在进程信息中显示线程的详细信息。 默认情况下,top 不显示线程信息,使用此选项可以查看每个进程的线程。
-i 不显示闲置(idle)或无用的进程。 例如:top -i 只显示活动进程。
-b 以批处理(batch)模式运行,直接将结果输出到文件。 例如:top -b -n 2 > top_output.txt 将输出两次结果到 top_output.txt 文件中。
-c 显示完整的命令行而不截断。 例如:top -c 可以查看进程执行的完整命令。

2.2、top 命令使用举例

2.2.1、查看所有进程

top

如上图所示:显示了所有进程的情况。

2.2.2、查看指定进程的所有线程

top -H -p [pid]

- H 选项可以切换 top 命令进入线程模式,这样它就会显示进程内的所有线程,而不是仅显示进程本身。 - 通过 -p pid 选项,可以指定要监控的进程 ID (PID)。

2.2.3、排序显示

  • M: 按内存使用排序
  • P: 按 CPU 使用排序
  • T: 按运行时间排序
  • N: 按 PID 排序
  • 通过按组合键 “shift + >” 或 “shift + <” 可以向右或左改变排序列

2.2.4、显示设置

  • E:切换 KiB Mem、KiB Swap 统计数据的内存单位 (KiB/MiB/GiB 等)
  • e:切换 VIRT、RES、SHR 内存单位 (m/g/t 等)
  • x: 高亮正在排序的列(若按 x 键没有高亮,需要先敲击 b 键控制打开/关闭加亮效果)
  • y: 高亮运行中的进程(若按 y 键没有高亮,需要先敲击 b 键控制打开/关闭加亮效果)
  • 在 top 结果显示中,按键盘数字 “1”,可监控每个逻辑CPU的状况

文章目录