linux top命令详解
young / / / 阅读量

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.

该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.。
top命令基本上是各个版本的linux的自带命令,例如:
CentOS,redhat,ubuntu,fedora等。
top命令的格式及参数如下
1)linux top命令及参数基本用法:

top -hv | -bcisSHM -d delay -n iterations [-u user | -U user] -p pid [,pid ...]

2)linux top命令各项参数用法说明

d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。 
p 通过指定监控进程ID来仅仅监控某个进程的状态。 
q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。 
S 指定累计模式。 s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。 
i 使top不显示任何闲置或者僵死进程。 
c 显示整个命令行而不只是显示命令名。 
-n :与 -b 搭配,意义是,需要进行几次 top 的输出结果。 
-p :指定某些个 PID 来进行观察监测而已。 
在 top 执行过程当中可以使用的按键指令: 
? :显示在 top 当中可以输入的按键指令; 
P :以 CPU 的使用资源排序显示; 
M :以 Memory 的使用资源排序显示; 
N :以 PID 来排序喔! 
T :由该 Process 使用的 CPU 时间累积 (TIME+) 排序。 
k :给予某个 PID 一个讯号 (signal) 
r :给予某个 PID 重新制订一个 nice 值。

3)top命令执行结果重要列的含义说明

默认显示的列包括 PID,USERPR,NI,VIRT,RES,SHR,S,{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418}CPU,{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418}MEM,TIME+,COMMAND.

top命令结果各列的含义如下:

列名    含义
PID    进程id
PPID    父进程id
RUSER    Realusername
UID    进程所有者的用户id
USER    进程所有者的用户名
GROUP    进程所有者的组名
TTY    启动进程的终端名。不是从终端启动的进程则显示为?
PR       优先级
NInice     值。负值表示高优先级,正值表示低优先级
P        最后使用的CPU,仅在多CPU环境下有意义
{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418}CPU    上次更新到现在的CPU时间占用百分比
TIME    进程使用的CPU时间总计,单位秒
TIME+    进程使用的CPU时间总计,单位1/100秒
{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418}MEM    进程使用的物理内存百分比
VIRT    进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP    进程使用的虚拟内存中,被换出的大小,单位kb。
RES    进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE    可执行代码占用的物理内存大小,单位kb
DATA    可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR    共享内存大小,单位kb
nFLT    页面错误次数
nDRT    最后一次写入到现在,被修改过的页面数。
S    进程状态。
D=    不可中断的睡眠状态
R=    运行
S=    睡眠
T=    跟踪/停止
Z=    僵尸进程
COMMAND    命令名/命令行
WCHAN    若该进程在睡眠,则显示睡眠中的系统函数名

3)top命令执行结果按照某一列排序

在命令行提示符执行top命令,输入大写P,则结果按CPU占用降序排序。输入大写M,结果按内存占用降序排序。(注:大写P可以在capslock状态输入p,或者按Shift+p)。默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418}CPU、{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418}MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。

通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。

按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。

按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。

 

linux退出top命令方法

在top命令运行时退出命令有两种方式:

  1. 在top命令运行的过程中按下键盘的q键可以退出。
  2. 在top命令运行的过程中按下键盘的ctrl+c键也可以退出。

linux TOP命令只查看某个或某些进程的信息 

linux TOP命令只查看某个某个具体的进程的方法如下:

top -p 进程ID

例如查看进程ID为2138的进程命令如下:

 

top -p 2138

linux TOP命令查看指定的多个进程的信息的方法如下:

top -p 进程ID1,进程ID2, ……

例如查看进程ID为2138,2139,2140的多个指定进程命令如下:

top -p 2138,2139,2140

linux TOP命令如何按内存占用或者CPU占用进行排序

1.在linux bash shell命令行提示符执行top命令。

2.输入键盘上的大写P,则结果按CPU占用降序排序。输入键盘上的大写M,结果按内存占用降序排序。(注:大写P可以在capslock状态输入p,或者按Shift+p)。

 

Linux Top命令中Load Average的含义

top命令中load average显示的是最近1分钟、5分钟和15分钟的系统平均负载。系统平均负载表示系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程树。如果一个进程满足以下条件则其就会位于运行队列中:

  • 它没有在等待I/O操作的结果

  • 它没有主动进入等待状态(也就是没有调用’wait’)

  • 没有被停止(例如:等待终止)

Update:在Linux中,进程分为三种状态,一种是阻塞的进程blocked process,一种是可运行的进程runnable process,另外就是正在运行的进程running process。当进程阻塞时,进程会等待I/O设备的数据或者系统调用。

进程可运行状态时,它处在一个运行队列run queue中,与其他可运行进程争夺CPU时间。 系统的load是指正在运行running one和准备好运行runnable one的进程的总数。比如现在系统有2个正在运行的进程,3个可运行进程,那么系统的load就是5。load average就是一定时间内的load数量。

 

linux top命令使用举例 

实例1:每两秒钟更新一次 top ,观察整体信息,-d参数举例

     
[root@linux ~]# top -d 2
top - 18:30:36 up 30 days, 7 min, 1 user, load average: 0.42, 0.48, 0.45
Tasks: 163 total, 1 running, 161 sleeping, 1 stopped, 0 zombie
Cpu(s): 4.7{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418} us, 4.0{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418} sy, 6.3{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418} ni, 82.5{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418} id, 0.4{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418} wa, 0.1{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418} hi, 2.0{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418} si
Mem: 1033592k total, 955252k used, 78340k free, 208648k buffers
Swap: 1052216k total, 728k used, 1051488k free, 360248k cached
<==如果加入 k 或 r 时,就会有相关的字样出现在这里
  
PID USER PR NI VIRT RES SHR S {5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418}CPU {5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418}MEM TIME+ COMMAND
3981 apache 34 19 84012 11m 7352 S 17.3 1.2 0:00.09 httpd
1454 mysql 16 0 289m 40m 2228 S 3.8 4.0 115:01.32 mysqld
3985 dmtsai 15 0 2148 904 668 R 3.8 0.1 0:00.03 top
1 root 16 0 3552 552 472 S 0.0 0.1 0:08.90 init
2 root RT 0 0 0 0 S 0.0 0.0 0:52.76 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:03.01 ksoftirqd/0

实例2:将 top 的信息进行 2 次,然后将结果输出到 /tmp/top.txt,-B -N参数

     
[root@linux ~]# top -b -n 2 > /tmp/top.txt

实例3:假设 9999 是一个已经存在的 PID ,用top命令仅观察指定pid的程序的-p参数用法

     
[root@linux ~]# top -d 2 -p 9999
top - 13:53:00 up 51 days, 2:27, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418} us, 0.0{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418} sy, 0.0{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418} ni, 100.0{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418} id, 0.0{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418} wa, 0.0{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418} hi, 0.0{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418} si
Mem: 385676k total, 371760k used, 13916k free, 131164k buffers
Swap: 1020116k total, 880k used, 1019236k free, 95772k cached
  
PID USER PR NI VIRT RES SHR S {5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418}CPU {5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418}MEM TIME+ COMMAND
9999 root 16 0 5396 1544 1244 S 0.0 0.4 0:00.07 bash

示例4:在linux中查看指定进程的线程数的-H参数用法

top -H

手册中说:-H : Threads toggle

加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。

在linux中查看mysql线程的top命令,mysql的pid为2308

top -H -p 2308

 

 

支付宝捐赠
请使用支付宝扫一扫进行捐赠
微信捐赠
请使用微信扫一扫进行赞赏
有 0 篇文章