ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Linux下top命令之详解

Linux下top命令之详解

Linux操作系统 作者:hd_system 时间:2016-10-21 16:14:37 0 删除 编辑
  1. 使用SSHClient客户端连接到远程Linux系统。使用top命令查看系统的当前运行的情况。如图对top命令执行的结果做了简单的图解,下面针对每一项做详细的解释。

  2. top命令的第一行“top - 19:56:47 up 39 min,  3 users,  load average: 0.00, 0.00, 0.00”显示的内容依次为“系统当前时间 、系统到目前为止已运行的时间、当前登录系统的用户数量、系统负载(任务队列的平均长度)三个值分别为1分钟、5分钟、15分钟前到现在的平均值【这三个一般会小于1,如果持续高于5,请仔细查看那个程序影响系统的运行】”

  3. top命令的第二行“Tasks: 120 total,   2 running, 118 sleeping,   0 stopped,   0 zombie”显示的内容依次“所有启动的进程数”、“正在运行的进程数”、“挂起的进程数”、“停止的进程数”、“僵尸进程数”。

  4. top命令的第三行“Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st”显示的内容依次为“用户空间占用CPU百分比”、“内核空间占用CPU百分比”、“用户空间内改变过优先级的进程占用CPU百分比”、“空闲CPU百分比”、“等待输入输出CPU时间百分比”、“CPU服务于硬件中断所耗费的时间总额”、“CPU服务软中断所耗费的时间总额”、“Steal Time”

  5. top命令第四行“Mem:    508820k total,   480172k used,    28648k free,    41944k buffers”显示内容依次为“物理内存总量”、“已使用的物理内存”、“空闲物理内存”、“内核缓存内存量”。

  6. top命令第5行“Swap:   392184k total,        0k used,   392184k free,   259152k cached”显示内容依次为“交换区总量”、“已使用交互区总量”、“空闲交换区总量”、“缓冲的交换区总量”。

  7. top命令第5行“PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND ”显示内容依次为“进程ID”、“进程所有者”、“优先级”、“nice值,负值表示高优先级,正值表示低优先级”、“进程使用的虚拟内存总量”、“进程使用的、未被换出的物理内存大小”、“共享内存大小”、“进程状态”、“上次更新到现在的CPU时间占用百分比”、“进程使用的物理内存百分比”、“进程使用CPU总时间”、“命令名、命令行”。


    ##############################进程信息##################################
    列名

    含义
    PID 进程id
    PPID 父进程id
    RUSER Real user name
    UID 进程所有者的用户id
    USER 进程所有者的用户名
    GROUP 进程所有者的组名
    TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
    PR 优先级
    NI nice值。负值表示高优先级,正值表示低优先级
    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 若该进程在睡眠,则显示睡眠中的系统函数名
    Flags 任务标志
    ##############################top用法##################################
    1.top命令默认值显示前面一部分的进程,若是想要查看全部的进程信息,则需要使用命令:top -ab -n 1,在这个命令中,a表示按内存倒序排列,b表示将所有列输出,n表示只执行一次。

    2.在使用top -ab -n 1将所有进程信息输出之后,可以使用AWK等类似工具统计信息,例如:统计出COMMAND为httpd的所有进程占用的内存。

    3.也可以使用命令top -an -n 1 | grep httpd,查看所有httpd的进程信息

    top命令的格式及参数如下

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


    点击(此处)折叠或打开

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

    2)常用参数说明


    点击(此处)折叠或打开

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

    linux下top命令执行结果

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

    linux下top命令执行结果详解

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

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

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


    点击(此处)折叠或打开

    1. 列名 含义
    2. PID 进程id
    3. PPID 父进程id
    4. RUSER Realusername
    5. UID 进程所有者的用户id
    6. USER 进程所有者的用户名
    7. GROUP 进程所有者的组名
    8. TTY 启动进程的终端名。不是从终端启动的进程则显示为?
    9. PR 优先级
    10. NInice 值。负值表示高优先级,正值表示低优先级
    11. P 最后使用的CPU,仅在多CPU环境下有意义
    12. %CPU 上次更新到现在的CPU时间占用百分比
    13. TIME 进程使用的CPU时间总计,单位秒
    14. TIME+ 进程使用的CPU时间总计,单位1/100秒
    15. %MEM 进程使用的物理内存百分比
    16. VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
    17. SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
    18. RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
    19. CODE 可执行代码占用的物理内存大小,单位kb
    20. DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
    21. SHR 共享内存大小,单位kb
    22. nFLT 页面错误次数
    23. nDRT 最后一次写入到现在,被修改过的页面数。
    24. S 进程状态。
    25. D= 不可中断的睡眠状态
    26. R= 运行
    27. S= 睡眠
    28. T= 跟踪/停止
    29. Z= 僵尸进程
    30. COMMAND 命令名/命令行
    31. 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命令快捷键操作

    linux下top命令使用举例 

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


    点击(此处)折叠或打开

    1. [root@linux ~]# top -d 2
    2. top - 18:30:36 up 30 days, 7 min, 1 user, load average: 0.42, 0.48, 0.45
    3. Tasks: 163 total, 1 running, 161 sleeping, 1 stopped, 0 zombie
    4. Cpu(s): 4.7% us, 4.0% sy, 6.3% ni, 82.5% id, 0.4% wa, 0.1% hi, 2.0% si
    5. Mem: 1033592k total, 955252k used, 78340k free, 208648k buffers
    6. Swap: 1052216k total, 728k used, 1051488k free, 360248k cached
    7. <==如果加入 k 或 r 时,就会有相关的字样出现在这里
    8.   
    9. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    10. 3981 apache 34 19 84012 11m 7352 S 17.3 1.2 0:00.09 httpd
    11. 1454 mysql 16 0 289m 40m 2228 S 3.8 4.0 115:01.32 mysqld
    12. 3985 dmtsai 15 0 2148 904 668 R 3.8 0.1 0:00.03 top
    13. 1 root 16 0 3552 552 472 S 0.0 0.1 0:08.90 init
    14. 2 root RT 0 0 0 0 S 0.0 0.0 0:52.76 migration/0
    15. 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. [root@linux ~]# top -d 2 -p 9999
    2. top - 13:53:00 up 51 days, 2:27, 1 user, load average: 0.00, 0.00, 0.00
    3. Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
    4. Cpu(s): 0.0% us, 0.0% sy, 0.0% ni, 100.0% id, 0.0% wa, 0.0% hi, 0.0% si
    5. Mem: 385676k total, 371760k used, 13916k free, 131164k buffers
    6. Swap: 1020116k total, 880k used, 1019236k free, 95772k cached

    7. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    8. 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

    linux下top命令查看指定进程的线程

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

    linux下top命令详解包括top命令参数使用及结果(virt,res,shr)排序举例说明


    linux下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使用率排序。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29209863/viewspace-2126882/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2016-10-12

  • 博文量
    149
  • 访问量
    99047