1. top命令
- linux 截图

- mac截图

1.1 介绍
top
命令界面分为两个主要部分:
- 系统信息部分:位于顶部,显示系统总体状态,包括系统时间、系统运行时间、用户会话、系统负载、CPU 使用率、内存和交换区使用情况等。
- 进程信息部分:位于下方,显示当前系统中各个进程的详细信息,包括进程 ID、用户、优先级、虚拟内存使用情况、物理内存使用情况、CPU 使用率、命令等。

1.2 系统信息部分
- uptime: 显示系统当前时间和启动累计时间。
- load average: 显示系统的平均负载,分别是 1 分钟、5 分钟和 15 分钟的负载值。
- tasks: 显示任务的总数和各状态的任务数,如运行、睡眠、停止和僵尸任务。
- cpu(s): 显示 CPU 使用情况,包括用户态、系统态、低优先级用户态、空闲、IO 等待、硬中断、软中断和虚拟化时间。
- mem: 显示物理内存的总量、使用量、空闲量和缓存量。
- swap: 显示交换区的总量、使用量、空闲量和缓存量。
1.3 进程信息部分
- PID: 进程 ID。
- USER: 启动该进程的用户。
- PR: 进程优先级。
- NI: 进程的 nice 值,负值表示高优先级,正值表示低优先级。
- VIRT: 进程使用的虚拟内存总量。【虚拟内存】
- RES: 进程使用的常驻内存总量。【物理内存】
- SHR: 进程使用的共享内存总量。【共享内存】
- S: 进程状态(R: 运行,S: 睡眠,D: 不可中断睡眠,Z: 僵尸进程,T: 停止)。
- %CPU: 进程占用的 CPU 百分比。
- %MEM: 进程占用的内存百分比。
- TIME+: 进程占用的 CPU 时间总和。
- COMMAND: 启动进程的命令名。
1.3 常用操作
h
: 显示帮助信息。q
: 退出top
。Space
: 立即刷新。P
: 按 CPU 使用率排序。M
: 按内存使用量排序。N
: 按进程 ID 排序。T
: 按运行时间排序。k
: 终止一个进程。按k
后,输入进程 ID,再按回车
。r
: 重新调度一个进程的优先级。按r
后,输入进程 ID,再输入新优先级值。u
: 只显示特定用户的进程。按u
后,输入用户名。
top
命令的强大之处在于其实时性和灵活性,用户可以根据需求调整显示内容和排序方式,从而更好地监控和管理系统资源。
2. 内存参数
2.1 Mem, Swap
1. 物理内存
mem
代表物理内存(RAM),是计算机中用于临时存储和访问数据的高速存储器。物理内存的特点是速度快,但容量相对有限。top
命令中的 mem
部分详细描述了物理内存的使用情况,包括以下几个关键指标:
几个关键指标:
- total: 总物理内存容量。
- used: 已使用的物理内存量。
- free: 空闲的物理内存量。
- buffers/cache: 用于缓存和缓冲的内存量。
2. 交换内存
swap
代表交换分区或交换文件,是硬盘上的一个特殊区域,用于在物理内存不足时临时存储不常用的数据。交换分区的特点是容量较大,但速度比物理内存慢很多。top
命令中的 swap
部分详细描述了交换分区的使用情况,包括以下几个关键指标:
- total: 总交换分区容量。
- used: 已使用的交换分区量。
- free: 空闲的交换分区量。
- cached: 交换分区中缓存的内存量。
3. 区别
物理内存: 速度快,是 CPU 直接访问的存储区域。
交换分区: 速度慢,是硬盘上的存储区域,需要通过磁盘 I/O 访问。
物理内存: 容量有限,受计算机硬件限制。
交换分区: 容量相对较大,可以根据需要调整,但依赖于硬盘的总容量。
物理内存: 用于存储和快速访问当前运行的程序和数据。
交换分区: 用于在物理内存不足时,临时存储不活跃的进程和数据,以释放物理内存。

2.2 进程的 RES, VIRT, SHR
RES 【Resident size (kb)】
任务已使用的非交换物理内存。
VIRT 【Virtual Image (kb)】
任务使用的虚拟内存总量。它包括所有代码、数据和共享库以及已换出的页面和已映射但未使用的页面。
SHR 【Shared Mem size (kb)】
一个任务所使用的共享内存量。它只是反映了可能与其他进程共享的内存。
2.3 虚拟内存和交换分区
1. 虚拟内存
关于虚拟内存这个术语存在一些混淆,它实际上指的是以下两个非常不同的概念
- 使用磁盘页面来扩展计算机物理内存的概念量——正确的术语实际上是分页。
- 各种操作系统/CPU 使用的一种抽象,用来创建每个进程在单独的连续地址空间中运行的假象。
2. 交换分区
交换分区,是在不使用时用于存储额外RAM页的磁盘部分的名称。
2.4 虚拟内存增加,物理内存不增加
当进程通过内存映射文件(如共享库、动态链接库)访问文件内容时,操作系统会将文件的部分内容映射到进程的地址空间中。
这些映射的内容会占用进程的虚拟内存空间,但实际上并不会立即加载到物理内存中,而是在需要访问时才会被载入。因此,虚拟内存会增加,但物理内存不会立即增加。