linux​下top命令详细介绍

top 命令是 Linux 下常用​的系统资源占用查看及性能分析工具​,能够实时​显示系统中各个进程​的资源(比如cpu​、内存​的使用)占用状况,top命令的执行结果是一个动态显示过程,即可以通过用户按键来不断刷新​当前状态​.如果在前台​执行该命令,它将独占前台,直到用户终止该程序​为止.top命令提供了实时的对系统处理器​的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间​对任务进行排序​;而且该命令的很多特性​都可以通过交互式​命令或者在个人定制文件​中进行设定。top命令基本上是各个版本​的linux的自带命令,例如:CentOS​,redhat​,ubuntu等。

top命令的格式及参数如下

1)命令及参数基本用法:

1


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


2)常用参数​​说明​

1



2



3



4



5



6



7



8



9



10



11



12



13



14



15



16



17


​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 值。​


linux下top命令执行结果

1)top命令执行结果如图所示

2)top命令执行结果重要列的含义详解

默认显示的列包括 ​​PID​​​,USERPR,NI,VIRT,RES,​​SHR​​​,S,%CPU,%MEM,​​TIME​​​+,​​COMMAND​​.

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

1



2



3



4



5



6



7



8



9



10



11



12



13



14



15



16



17



18



19



20



21



22



23



24



25



26



27



28



29



30



31


​列名    含义​



​PID    进程id​



​PPID    父进程id​



​RUSER    Realusername​



​UID    进程所有者的用户id​



​USER    进程所有者的用户名​



​GROUP    进程所有者的组名​



​TTY    启动进程的终端名。不是从终端启动的进程则显示为?​



​PR       优先级​



​NInice     值。负值表示高优先级,正值表示低优先级​



​P        最后使用的CPU,仅在多CPU环境下有意义​



​%CPU    上次更新到现在的CPU时间占用百分比​



​TIME    进程使用的CPU时间总计,单位秒​



​TIME+    进程使用的CPU时间总计,单位1/100秒​



​%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、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的​​快捷键​​​来更改显示​​内容​​。

更改显示内容

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

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

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


linux下top命令使用举例 

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

1



2



3



4



5



6



7



8



9



10



11



12



13



14



15


​[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% us, 4.0% sy, 6.3% ni, 82.5% id, 0.4% wa, 0.1% hi, 2.0% 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 %CPU %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参数

1


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


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

1



2



3



4



5



6



7



8



9


​[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% us, 0.0% sy, 0.0% ni, 100.0% id, 0.0% wa, 0.0% hi, 0.0% 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 %CPU %MEM TIME+ COMMAND​



​9999 root 16 0 5396 1544 1244 S 0.0 0.4 0:00.07 bash​


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

1


​top​​  ​​-H​


手册中说:-H : ​​Threads​​​ ​​toggle​

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

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

1


​top​​  ​​-H -p 2308​




示例5: top命令执行结果之后按数字键1显示各个CPU的核心命令




linux下top命令补充说明(常见问题解答)

top命令是Linux上进行​​系统监控​​​的首选命令,当不能满足用户需求时,通常可用​​ps​​和netstate两个命令来补充top的不足。

Linux下top命令中%CPU结果为什么比%us的结果高?

    us是user,sy是​​system​​​,注意看%wa,waiting,这个是等​​IO​​​的​​时间​​,一般来说是在等磁盘操作。

100%-%id(​​idle​​)就是总共实际使用的CPU时间了。

在Linux下怎样让top命令启动之后就按内存使用排序?

    在​​键盘​​上输入大写字母M 以达到以内存占用率大小顺序排列。另外输入大写字母P可以按CPU使用率排序