• top命令详解


    top命令

      top命令是我们经常使用的查看进程系统资源使用情况的工具,那么top有什么常用的选项、各个显示项又代表什么呢?

    常用参数

    # 常用参数
    d   指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之
    p   通过指定监控进程ID来仅仅监控某个进程的状态
    c   显示进程名称或整个运行命令
    s  使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险
    i   使top不显示任何闲置或者僵死进程
    S  指定累计模式 

    实例:

    # top          //每隔5秒显式所有进程的资源占用情况
    # top -d 2         //每隔2秒显式所有进程的资源占用情况
    # top -c           //每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
    # top -p 12345 -p 6789        //每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况
    # top -d 2 -c -p 123456       //每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数

    参数详解

      以下图为例对top命令结果做详细记录

    注:top命令执行以后,大写M,按内存使用情况排序;大写P,按cpu使用情况排序;大写H,显示线程数;数字1,可查看CPU个数,限于屏幕大小原因可能显示不完成,可通过/proc/cpuinfo中搜索"model name"查看具体个数。

    1、第一行任务队列信息,同uptime命令效果相同

    02:22:03 当前时间
    up 1 day, 18:09 系统运行时间
    1 user 当前登陆用户数
    load average: 0.00, 0.00, 0.00  系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的系统平均负载

      什么是系统平均负载?平均负载可以理解为当前系统的平均活跃进程数,包含了系统处于可运行状态和不可中断状态的平均进程数,就是平均活跃进程数。

      那么知道了什么是系统平均负载,那么它为多少时代表我们的系统负载较高呢?比如,此时1分钟的平均负载为5.6,而我们的操作系统是4个CPU,那么就代表此时系统负载过高,意味着有160%的的超载进程竞争不到CPU;若负载为2.0,则意味着有50%的CPU空闲。

    2、第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:(top命令回车后,按数字"1"就会显示cpu的核数,前提是当前屏幕足够大,能够全部显示cpu核数

    total 进程总数
    running 正在运行的进程数
    sleeping 睡眠的进程数
    stopped 停止的进程数
    zombie 僵尸进程数
    Cpu(s):
    0.3% us 用户空间占用CPU百分比
    0.3% sy 内核空间占用CPU百分比
    0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
    99.5% id 空闲CPU百分比
    0.0% wa 等待输入输出的CPU时间百分比
    0.0%hi:硬件CPU中断占用百分比
    0.0%si:软中断占用百分比
    0.0%st:虚拟机占用百分比

      从上我们可以看到进程的状态都处于S状态,那么除了S,还有其他进程状态么?当然除了S状态,还有R、D、Z、I 等几个状态,它们分别是什么意思呢?

    • R 是 Running 或 Runnable 的缩写,表示进程在 CPU 的就绪队列中,正在运行或者正在等待运行。
    • D 是 Disk Sleep 的缩写,也就是不可中断状态睡眠(Uninterruptible Sleep),一般表示进程正在跟硬件交互,并且交互过程不允许被其他进程或中断打断。
    • Z 是 Zombie 的缩写,它表示僵尸进程,也就是进程实际上已经结束了,但是父进程还没有回收它的资源(比如进程的描述符、PID 等)。
    • S 是 Interruptible Sleep 的缩写,也就是可中断状态睡眠,表示进程因为等待某个事件而被系统挂起。当进程等待的事件发生时,它会被唤醒并进入 R 状态。
    • I 是 Idle 的缩写,也就是空闲状态,用在不可中断睡眠的内核线程上。硬件交互导致的不可中断进程用 D 表示,但对某些内核线程来说,它们有可能实际上并没有任何负载,用 Idle 正是为了区分这种情况。D 状态的进程会导致平均负载升高, I 状态的进程却不会。
    3、第四、五行为内存信息
    Mem:
    65724264k total    物理内存总量
    37653788k used    使用的物理内存总量
    28070476k free    空闲内存总量
    371320k buffers    用作内核缓存的内存量
    Swap:
    32767996k total    交换区总量
    0k used            使用的交换区总量
    32767996k free    空闲交换区总量
    31845892k cached    缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入
    4、进程信息区统计信息区域的下方显示了各个进程的详细信息。
     列名    含义
     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   任务标志,参考 sched.h
     
      以上则为本次top命令的各参数含义记录。
  • 相关阅读:
    [转]jQuery知识总结
    sqlserver2008 函数1
    使用触发器生成流水号
    日期格式
    数据库正在使用,删除不了的问题
    continue 语句
    逻辑语句和函数
    ASP.NET中的随机密码生成
    相对路径
    “基类包括字段,但其类型与控件的类型不兼容”的解决方法
  • 原文地址:https://www.cnblogs.com/wushaoyu/p/10477941.html
Copyright © 2020-2023  润新知