命令参数
- 无参:实时输出系统信息
- -b:批次输出系统信息,适用于脚本处理
- -d 秒数:命令刷新的时间间隔
- -n 次数:命令刷新的次数,达到次数后自动退出
- -H:以线程模式运行,输出每个进程的线程信息
- -i:不显示任何闲置(idle)或僵尸(zombie)进程
- -u 用户名:只显示指定用户名的进程信息
- -p 进程ID:只显示指定进程ID的进程信息
命令输出字段解释
top - 17:03:29【1】 up 6 min【2】, 4 users【3】, load average: 0.05, 0.50, 0.34【4】
Tasks: 215 total【5】, 1 running【6】, 214 sleeping【7】, 0 stopped【8】, 0 zombie【9】
%Cpu(s): 2.6 us【10】, 10.3 sy【11】, 0.0 ni【12】, 87.2 id【13】, 0.0 wa【14】, 0.0 hi【15】, 0.0 si【16】, 0.0 st【17】
MiB Mem : 1927.6 total【18】,675.6 free【19】,644.5 used【20】,607.5 buff/cache【21】
MiB Swap: 3890.0 total【22】,890.0 free【23】,0.0 used【24】,1121.1 avail Mem【25】
PID【26】 USER【27】 PR【28】 NI【29】 VIRT【30】 RES【31】 SHR【32】 S【33】 %CPU【34】 %MEM【35】 TIME+【36】 COMMAND 【37】
1 root 20 0 100908 11676 8288 S 0.0 0.6 0:05.33 systemd
- 系统时间 ↩︎
- 开机时间 ↩︎
- 已登录系统用户 ↩︎
- 1分钟、5分钟、15分钟负载值 ↩︎
- 进程数量 ↩︎
- 运行状态的进程数量 ↩︎
- 休眠状态的进程数量 ↩︎
- 停止状态的进程数量 ↩︎
- 僵尸状态的进程数量 ↩︎
- 用户空间占用CPU百分比 ↩︎
- 内核空间占用CPU百分比 ↩︎
- 改变过优先级的进程占用CPU百分比 ↩︎
- 空闲CPU百分比 ↩︎
- IO等待占用CPU百分比 ↩︎
- 硬中断占用CPU百分比 ↩︎
- 软中断占用CPU百分比 ↩︎
- 虚拟化环境中的 CPU 被其他虚拟机(或宿主机)“窃取”使用的时间,这个值只在虚拟化环境中才会出现 ↩︎
- 物理内存总量 ↩︎
- 交换区空闲量,物理内存空闲量 ↩︎
- 物理内存已使用量 ↩︎
- 物理内存换存量 ↩︎
- 交换区总量 ↩︎
- 交换区空闲量,表示当前系统中实际可供系统使用的内存总量。它考虑了系统中已经被分配但尚未使用的内存、缓存以及内核使用的内存等。这个值通常比"free"显示的值要大,因为它考虑了系统在需要时可以释放的内存。 ↩︎
- 交换区已使用量 ↩︎
- 交换区可用量,表示系统中当前完全空闲的内存总量。它只考虑了没有被系统占用的内存,不包括已经被分配但尚未使用的内存和缓存等。这个值相对于"avail Mem"来说更加保守,因为它不考虑系统在需要时可以释放的内存。 ↩︎
- 进程ID ↩︎
- 进程所有者 ↩︎
- 进程优先级 ↩︎
- nice值,负值表示高优先级,正值表示低优先级 ↩︎
- 进程使用的虚拟内存总量,VIRT=SWAP+RES,单位kb ↩︎
- 进程中使用的、未被换出的物理内存大小,RES=CODE+DATA,单位kb ↩︎
- 共享内存大小,单位kb ↩︎
- 进程状态,D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 ↩︎
- 最新一次刷新到现在的CPU时间占用百分比 ↩︎
- 进程使用的物理内存百分比 ↩︎
- 进程使用的CPU时间总计,单位1/100秒 ↩︎
- 进程名 ↩︎
扩展知识点
用户空间
用户空间是指用户程序运行的环境,其中包含了用户应用程序的代码和数据。
在用户空间中,用户程序只能访问受限的资源和功能,如自身的内存空间、文件系统、网络接口等。
用户程序无法直接访问底层硬件或执行特权指令,必须通过系统调用(System Call)请求操作系统提供服务。
大多数应用程序都在用户空间运行,例如文本编辑器、浏览器、游戏等。
内核空间
内核空间是操作系统内核运行的环境,其中包含了操作系统的核心功能和服务。
在内核空间中,操作系统拥有完全的控制权,可以访问系统的所有资源和硬件,并执行特权指令。
内核空间包含了操作系统的各种核心模块,如进程管理、内存管理、设备驱动程序、文件系统等。
用户程序无法直接访问内核空间,必须通过系统调用向内核发出请求,由内核代为执行操作。
用户空间和内核空间之间的划分是为了保护系统的稳定性和安全性。通过将用户程序和操作系统内核分隔开来,可以防止用户程序直接访问和操作系统的核心部分,从而避免了用户程序对系统的滥用和破坏。同时,通过系统调用机制,用户程序可以请求操作系统提供各种服务,实现了用户程序与操作系统之间的有效交互。
IO等待
指进程因等待输入/输出操作而暂停执行的时间。在计算机系统中,输入/输出操作可能涉及磁盘读写、网络通信、键盘输入等。
当进程发起一个需要等待输入/输出完成的操作时,它会暂停执行,将 CPU 控制权交给其他就绪状态的进程。这时进程处于 IO 等待状态,直到相应的输入/输出操作完成并返回结果后,进程才会恢复执行。
IO 等待在系统的性能分析和优化中是一个重要指标。过多的 IO 等待可能会导致系统性能下降,因为进程无法有效利用 CPU 资源。常见的 IO 等待场景包括磁盘读写速度较慢、网络传输延迟较高等。通过监控和优化 IO 等待时间,可以提高系统的响应速度和整体性能。
硬中断
硬中断是由计算机硬件生成的信号,用于通知 CPU 发生了某种事件或需要 CPU 进行处理。
典型的硬中断包括定时器中断(用于处理系统时钟)、外部设备中断(例如键盘、鼠标、网卡的中断)、硬盘控制器中断等。
当硬件发出中断信号时,CPU 会立即停止当前执行的指令,保存当前的状态,并跳转到预先定义好的中断处理程序(中断服务程序)来处理中断事件。
软中断
软中断是由软件生成的中断信号,用于请求操作系统执行特定的功能或服务。
典型的软中断是系统调用(System Call),用于请求操作系统提供各种服务,例如文件操作、进程管理、网络通信等。
软中断是用户空间程序向内核空间发出的一种请求,它们通常通过特殊的中断指令(例如int 0x80
)来触发。当用户程序发出软中断请求时,CPU 会切换到内核空间,并执行相应的中断处理程序来完成用户请求的操作,然后返回到用户程序继续执行。