top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.
1.命令格式:
top [参数]
2.命令功能:
显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等
3.命令参数:
-b 批处理
-c 显示完整的治命令
-I 忽略失效过程
-s 保密模式
-S 累积模式
-i<时间> 设置间隔时间
-u<用户名> 指定用户名
-p<进程号> 指定进程
-n<次数> 循环显示的次数
4.使用实例:
实例1:显示进程信息
命令:top
输出:
下面逐行解释这些内容代表什么含义。
- 第一行:概况
HH:mm:ss
:当前的系统时间。up xxx days, HH:mm
:从本次开机到现在经过的时间。x user
:当前有几个用户登录到该机器。load average
:系统1分钟、5分钟、15分钟内的平均负载值。
平均负载的详细含义和算法内容很丰富,请暂时参考这里。 - 第二行:进程计数(Tasks)
total
:进程总数。running
:正在运行的进程数,对应状态TASK_RUNNING。sleeping
:睡眠的进程数,对应状态TASK_INTERRUPTIBLE和TASK_UNINTERRUPTIBLE。stopped
:停止的进程数,对应状态TASK_STOPPED。zombie
:僵尸进程数,对应状态TASK_ZOMBIE。 - 第三行:CPU使用率(%Cpu(s))
us
:进程在用户空间(user)消耗的CPU时间占比,不包含调整过优先级的进程。sy
:进程在内核空间(system)消耗的CPU时间占比。ni
:调整过用户态优先级的(niced)进程的CPU时间占比。id
:空闲的(idle)CPU时间占比。wa
:等待(wait)I/O完成的CPU时间占比。hi
:处理硬中断(hardware interrupt)的CPU时间占比。si
:处理软中断(software interrupt)的CPU时间占比。st
:当Linux系统是在虚拟机中运行时,等待CPU资源的时间(steal time)占比。 - 第四、五行:物理内存和交换空间(Mem/Swap)
以物理内存为例。free命令也会打印出类似的信息。total
:内存总量。free
:空闲内存量。used
:使用中的内存量。buff/cache
:缓存和page cache占用的内存量。 - 以下所有行:进程详细信息
这里显示的数据列是可以改的,默认会显示如图中的12列。其含义分别如下:PID
:进程ID。USER
:进程所有者的用户名。PR
:从系统内核角度看的进程调度优先级。NI
:进程的nice值,即从用户空间角度看的进程优先级。值越低,优先级越高。VIRT
:进程申请使用的虚拟内存量。RES
:进程使用的驻留内存(即未被swap out的内存)量。SHR
:进程使用的共享内存量。S
:进程状态。R=running,S=interruptible sleeping,D=uninterruptible sleeping,T=stopped,Z=zombie。%CPU
:进程在一个更新周期内占用的CPU时间比例。%MEM
:进程占用的物理内存比例。TIME+
:进程创建后至今占用的CPU时间长度。COMMAND
:运行进程使用的命令。
在top命令的界面中,可以输入一些指令实现交互性的操作,下面列出一些比较常用的交互性操作。
- CTRL+L:刷新整个屏幕,重新开始显示。
- h:显示帮助。
- q:退出top程序。
- 空格:立即刷新信息。
- k:杀掉进程。输入k之后,会提示用户输入PID及要发送哪种信号。
- r:重新设置进程优先级,即renice。输入r之后,会提示用户输入PID及新的nice值。
- s:改变刷新周期。输入s之后,会提示用户输入新的刷新周期,单位为秒。
- n:改变进程列表中的显示数量。
- f:添加或删除进程列表中的列。输入f之后会显示字母与列的映射表,再输入对应字母就可以开关相应的列。
- c:在COMMAND列中切换显示命令名和完整的命令行。
- u:指定在进程列表中只显示对应用户的进程。
- l:切换显示界面中第一行信息(时间和平均负载)。
- t:切换显示界面中第二、三行信息(进程和CPU统计)。
- m:切换显示界面中第四、五行信息(内存和交换空间)。
- 1:切换展开CPU统计信息。展开后,会分别显示CPU每个逻辑核心的占用。
- N:按PID对进程排序。
- M:按%MEM对进程排序。
- P:按%CPU对进程排序。
- T:按TIME+对进程排序。
- H:切换在进程列表中显示所有线程信息。
其他使用技巧:
1.多U多核CPU监控
在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况:
观察上图,服务器有16个逻辑CPU,实际上是4个物理CPU。再按数字键1,就会返回到top基本视图界面。
2.高亮显示当前运行进程
敲击键盘“b”(打开/关闭加亮效果),top的视图变化如下:
我们发现进程id为2570的“top”进程被加亮了,top进程就是视图第二行显示的唯一的运行态(runing)的那个进程,可以通过敲击“y”键关闭或打开运行态进程的加亮效果。
3.进程字段排序
默认进入top时,各进程是按照CPU的占用量来排序的,在下图中进程ID为28894的java进程排在第一(cpu占用142%),进程ID为574的java进程排在第二(cpu占用16%)。
敲击键盘“x”(打开/关闭排序列的加亮效果),top的视图变化如下:
可以看到,top默认的排序列是“%CPU”。