zoukankan      html  css  js  c++  java
  • linux分析工具之top命令详解

      Linux系统可以通过top命令查看系统的CPU、内存、运行时间、交换分区、执行的线程等信息。通过top命令可以有效的发现系统的缺陷出在哪里。是内存不够、CPU处理能力不够、IO读写过高。

    一、top选项

    使用语法:top -hv | -abcHimMsS -d delay -n iterations -p pid [, pid ...]

    复制代码
    -a:根据使用的内存排序
    -d:number代表秒数,表示top命令显示的页面更新一次的间隔。默认是5秒。 
    -b:以批次的方式执行top。 
    -n:与-b配合使用,表示需要进行几次top命令的输出结果。 
    -p:指定特定的pid进程号进行观察。
    -c:显示完整的治命令;
    -I:忽略失效过程;
    -s:保密模式;
    -S:累积模式;
    -i<时间>:设置间隔时间;
    -u<用户名>:指定用户名
    复制代码

    二、top命令页面详解

    直接输入top命令得到如下结果,如图所示:

    2.1、系统时间相关

    依次显示了系统当前时间 、系统到目前为止已运行的时间、当前登录系统的用户数量

    2.2、平均负载

    系统负载(任务队列的平均长度)三个值分别为1分钟、5分钟、15分钟前到现在的平均值(根据cpu数量去判断。如果平均负载始终在1.2一下,而你有2颗cup的机器。那么基本不会出现cpu不够用的情况。也就是Load平均要小于Cpu的数量,一般性负载超过cpu的个数的5倍则表示已经超负载了)

     2.3、进程相关参数

    Tasks: 288 total(总进程数),   2 running(运行中的进程数), 286 sleeping(挂起的进程数),   0 stopped(停止的进程数),   0 zombie(僵尸进程数)

     2.4、cpu相关参数

    Cpu(s): 32.0%us(用户使用cpu占比),  2.0%sy(系统使用cpu占比),  0.0%ni(用户空间内改变过优先级的进程占用CPU百分比), 65.3%id(空闲cpu占比),  0.1%wa(等待输入输出CPU时间百分比),  0.1%hi(CPU服务于硬件中断所耗费的时间总额),  0.5%si(CPU服务软中断所耗费的时间总额),  0.0%st(Steal Time)

     2.5、内存相关参数

    Mem:  16466536k total(物理内存总量),  7943976k used(已使用的物理内存),  8522560k free(剩余的物理内存),   404760k buffers(缓冲区内存)

     2.6、交换分区相关参数

    Swap:  4194300k total(交换分区总量),        0k used(已使用交换分区),  4194300k free(交换分区剩余量),  2228400k cached(缓冲的交换分区总量)

     2.7、具体进程相关参数

    复制代码
    PID(进程PID) 
    USER(进程所有者)      
    PR(优先级)  
    NI(nice值,负值表示高优先级,正值表示低优先级)  
    VIRT(进程使用的虚拟内存总量,VIRT=SWAP+RES)  
    RES(进程使用的、未被换出的物理内存大小)  
    SHR(共享内存大小) 
    S(进程状态,D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程) 
    %CPU(上次更新到现在的CPU时间占用百分比) 
    %MEM(进程使用的物理内存百分比)    
    TIME+(进程使用CPU总时间)  
    COMMAND(命令名、命令行)
    复制代码

     其他未显示的描述:

    复制代码
    PPID    #父进程id
    UID     #进程所有者的用户id
    USER    #进程所有者的用户名
    GROUP   #进程所有者的组名
    TTY     #启动进程的终端名。不是从终端启动的进程则显示为 ?
    P       #最后使用的CPU,仅在多CPU环境下有意义
    TIME    #进程使用的CPU时间总计,单位秒
    SWAP    #进程使用的虚拟内存中,被换出的大小,单位kb
    CODE    #可执行代码占用的物理内存大小,单位kb
    DATA    #可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
    nFLT    #页面错误次数
    nDRT    #最后一次写入到现在,被修改过的页面数。
    WCHAN   #若该进程在睡眠,则显示睡眠中的系统函数名
    Flags   #任务标志
    复制代码

    三、top命令交互详解

    当我们使用top之后,可以直接输入h或者?查看交换命令的帮助:

    复制代码
    Help for Interactive Commands - procps version 3.2.8
    Window 1:Def: Cumulative mode Off.  System: Delay 3.0 secs; Secure mode Off.
    
      Z,B       Global: 'Z' change color mappings; 'B' disable/enable bold  #Z改变颜色,B加粗
      l,t,m     Toggle Summaries: 'l' load avg; 't' task/cpu stats; 'm' mem info #t:显示和隐藏任务/cpu信息;m:显示和隐藏内存信息;l显示和隐藏平均负载信息
      1,I       Toggle SMP view: '1' single/separate states; 'I' Irix/Solaris mode #1:监控每个逻辑CPU的状况
      #f:进入字段显示配置模式,可增加或者移除显示字段,按相应的字母新增或去除;输入相应的字母,按enter确认
    #o:进入字段顺序设置模式,可配置显示位置顺序,按相应的字母往下移动,按“shift+相应的字母”往上移动 f,o . Fields/Columns: 'f' add or remove; 'o' change display order F or O . Select sort field #F进入字段排序配置模式,可设置排序的字段 ; O设置默认的排序字段 <,> . Move sort field: '<' next col left; '>' next col right R,H . Toggle: 'R' normal/reverse sort; 'H' show threads #R设置排序为正序、反序 c,i,S . Toggle: 'c' cmd name/line; 'i' idle tasks; 'S' cumulative time #i只显示正在运行的进程;c:切换显示命令名称和完整命令行 x,y . Toggle highlights: 'x' sort field; 'y' running tasks z,b . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y') u . Show specific user only #输入用户,显示用户的任务 n or # . Set maximum tasks displayed k,r Manipulate tasks: 'k' kill; 'r' renice d or s Set update interval #s设置刷新的时间--------常用 W Write configuration file q Quit ( commands shown with '.' require a visible task display window ) Press 'h' or '?' for help with Windows, any other key to continue
    复制代码

    M:根据驻留内存大小进行排序。-------------常用

    P:根据CPU使用百分比大小进行排序。-----------常用

    交互实践:

    使用1,查看每个cpu的情况

     使用f命令调出Flags列:f命令交互,然后输入z,enter确认就好

     

     然后使用M,更具内存排序(降序)

        top命令默认值显示前面一部分的进程,若是想要查看全部的进程信息,则需要使用命令:top -ab -n 1,在这个命令中,a表示按内存倒序排列,b表示将所有列输出,n表示只执行一次

    参考:

    https://www.cnblogs.com/fuqu/p/10230385.html#_label2

    随笔有些是自己写的,有些是根据网上的东西自己整理的,文章基本都是别人的,只是为方便查看复制到那里
  • 相关阅读:
    Combine 框架,从0到1 —— 4.在 Combine 中使用计时器
    Combine 框架,从0到1 —— 4.在 Combine 中使用通知
    Combine 框架,从0到1 —— 3.使用 Subscriber 控制发布速度
    Combine 框架,从0到1 —— 2.通过 ConnectablePublisher 控制何时发布
    使用 Swift Package Manager 集成依赖库
    iOS 高效灵活地配置可复用视图组件的主题
    构建个人博客网站(基于Python Flask)
    Swift dynamic关键字
    Swift @objcMembers
    仅用递归函数操作逆序一个栈(Swift 4)
  • 原文地址:https://www.cnblogs.com/yunman/p/14822181.html
Copyright © 2011-2022 走看看