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 + Z
或kill -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 MiB639.2 free
: 当前空闲的、未被使用的物理内存是 639.2 MiB1181.0 used
: 当前被进程占用的物理内存是 1181.0 MiB。这通常包括应用程序、操作系统内核和其它运行中的进程所使用的内存2056.3 buff/cache
: 这部分内存被用作文件系统和内核缓冲区以及缓存。虽然这部分内存被标记为 "已使用",但它实际上是可以在需要时快速释放给应用程序的,因为它主要存储的是可以重新从磁盘或其它来源获取的数据。因此,这部分内存实际上是 "可用" 的,只是在短期内被用来提高系统性能
为了更准确地了解系统上的内存使用情况,可以将 free
和 buff/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
: 进程 IDUSER
: 进程所有者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) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类