Linux进程管理和性能监控

概述

    监控系统的各方面的性能,保障各类服务的有序运行,是运维工作的重要组成部分,本篇就介绍一些常用的系统监控命令和相关参数的说明

    具体包含以下几个部分:

        1、进程管理基础

        2、进程管理类工具(ps、top、htop、kill)

        3、内存监控类工具(vmstat、pmap)

        4、系统监控类工具(glances、dstat)

        

第一章    进程管理基础概念

    1、进程是什么

        运行中的程序的一个副本,因为程序可能会同时被运行多次,故可理解为一个副本,每个进程都有生命周期

        linux内核存储进程信息的固定格式,被称为task struct(任务结构体)

        多个任务的task struct组成的链表,被称为task list(任务列表)

    2、cpu和内存的工作模式(个人总结)

        cpu是分时的:一个进程可占用多少cpu时长,一个cpu在同一时刻只能执行一个任务,CPU自身的寄存器中,存放着正在运行的进程的状态信息,当该进程分配的时间片到了时候,即使该进程没有执行完成,也会被调度出去,让下一个进程放到CPU上去运行,但是对于之前没有执行完成的进程,如果没有一种机制保存下来进程执行到哪里的等等的一些相关信息,那么当下一次轮到该进程执行时,又要重新开始执行,这样是不合理的。为了解决这种问题,就有了保存现场和恢复现场的概念

        保存现场就是当正在运行的进程,CPU运行时间到达之后,将进程运行的状态等信息,由内核调度存储到内存中,这就是保存现场

        恢复现场就是之前保存过的进程的运行状态的信息,当该进程又获得CPU运行时间时,将保存的状态信息调度到CPU上,这样CPU就能根据保存的状态继续运行进程,而不是从头开始运行进程

        内存是分空间的:一个进程可占用多少内存空间,内存分配方式有点类似磁盘,分成很多块,但内存不叫块,而是叫页框(page frame)用于存储页面数据,一般一个page的大小为4K。分配的页框可以有多个,且可以不连续。

        进程需要用到内存数据的时候,怎么去找内存中不连续的数据?

            因为数据在实际内存中可以不连续,也就是离散的,故一般情况下,内核会虚拟一个内存空间面向进程,进程不需要直接与实际的物理存储的内存打交道,只需与内核虚拟出来的内存打交道,内核虚拟出来的内存的大小,与计算机平台的位数有关系,一般32位系统上,单个进程虚拟出来的内存大小为4G,1G给内核使用,3G给该进程使用;64位系统上,单个进程虚拟出来的内存大小为4G个4G,内核虚拟出来的内存空间叫做线性地址空间,内核虚拟出来的内存对进程而言是连续,且独占的。这样,进程读写内存数据时就认为自己读取的是一个连续的地址空间,且是独占的,这段虚拟出来的空间中,只有真正被使用的部分,内核才会在物理内存上分配空间进行存储

        swap分区:为了防止过多的进程将实际物理内存占满导致程序无法运行,从而有了swap交换分区的概念,swap分区实际是用来临时存放内存中暂时用不到的页面数据。置换时,通常采用LRU算法(最近最少使用)将最近最少用到的数据暂存在交换分区中

        一次磁盘IO分为两段进行,第一段是将数据从磁盘拿到内存中内核空间,第二段时将内核空间的数据复制一份放到用户空间

    3、线程相关概念

        线程:是一个进程内部的多个执行流,一个执行流就叫一个线程

        一个进程只有一个执行流,也可以有线程,这种模式就叫单进程单线程模型

        一个进程有多个执行流,就叫单进程多线程模型

        如果一个进程有多个执行流,也就是有多个线程,但是如果只有1个CPU,那么也多线程也没有任何意义,因为一个cpu在同一时刻只能同时执行一个任务

        同一个进程内部的多个线程,可以共享内存空间。比如web服务,如果是单进程模型,一个进程相应一个用户请求,如果100个用户请求的都是index.html页面,那么在内存上就需要为每个进程存放都存放一个index.html的数据,这样就造成了内存浪费,但是如果是采用单进程多线程模式,这样利用一个线程相应一个用户请求,这样就只需要为这个进程在内存上存储一份index.html的数据,然后多个线程共享这段数据,这样就大大节约了内存的空间

        Linux原生对线程的支持性不是特别好

        一个进程的数据部分分为指令和数据,程序在执行时,内存中的数据也分指令数据和实际的数据,其中指令数据和部分的实际数据,是不能被交换到交换分区上的,称之为常驻内存集,而有些数据是可以被交换到交换分区上的,称之为虚拟内存集

    4、Linux上进程创建模型

        进程创建:

            init进程:初始化进程,后续的所有用户空间进程管理者(所有进程的父进程)

            其他进程:除了init进程之外,所有进程都由父进程创建,父进程利用fork()系统调用生成,每个进程都是由父进程fork()自身而来,会clone()自身的数据给子进程

            当父进程创建子进程时,子进程和父进程使用的是同一段内存空间;一旦子进程需要对该段内存空间的数据进行修改时,就会复制该段内存空间的数据到另外一段内存空间,子进程就指向了该段新的内存空间

            这种机制叫CoW(写时复制),如果子进程不对数据进程修改,跟父进程使用的内存空间都是同一个,但是一旦子进程要修改数据,就复制一份数据到另一块内存供子进程单独使用,而从此之后,子进程就一直使用新的内存空间了

        进程的终止:子进程完成一定的任务之后,释放掉自己占用的资源,然后父进程对子进程进行回收

    5、进程的优先级:

        0-139:

            1-99:实时优先级

            100-139:用户可调度的优先级(数字越小,优先级越高)

            nice值:-20到19分别对应100-139,进程初始时nice默认都为0,普通用户只能调低自己的优先级,也就是加大自己的nice值,而管理员用户可以任意指定

        修改进程优先级:nice、renice

            可调整的区间为100-139

        通过调整nice值可以调整进程的优先级:

        nice值的范围为-20到19,分别对应进程优先级的100-139

        进程启动时的默认nice值都为0,故其默认优先级为120

        普通用户:只能调大nice值,也就是降低优先级,不能低于0

        管理员:可以任意调整nice值-20到19

        怎么调整优先级:

            对于尚未启动的程序:

                nice -n 数字 COMMAND

                表示启动程序时,以指定的数字作为其nice值

            对于已经启动的进程:

                renice 数字  PID

                表示对指定的PID进程调整其nice值为指定数字

        blob.png

        blob.png     

    6、进程队列

        Linux内核为了能够快速的实现这些优先级不同的进程的调度,将待运行的进程按照对应的优先级分成了140个运行队列,每个优先级相同的进程为同一个队列,这样,内核进行调度时,不需要遍历整个队列,而是按照优先级从高到低,取队列的第一个进程进行调度

        同时也有140个过期队列,就是将上面运行队列中,调度过的进程,在为其分配的CPU时间片的时间内尚未运行完成,就放到了过期队列,当同优先级的运行队列中的进程都被调度完成后,就会重新调度过期队列,此时过期队列就变成了运行队列

    7、进程类型:

        守护进程:daemon,跟终端无关,由内核在系统引导过程中启动的进程

        用户前台进程:用户通过终端启动的进程,跟终端相关

        注意:也可把前台启动的进程收网后台,以守护模式运行

    8、进程的状态:

        运行态:running,进程正在运行中

        就绪态:ready,可以运行但尚未被运行

        睡眠态:sleeping

                可中断睡眠:interruptible,调度到CPU上可立即运行起来

                不可中断睡眠:uninterruptible  通常是指被IO阻塞的进程,等待IO满足之前无法继续运行

        僵死态:zombie,找不到归属,父进程没有回收该进程,父进程就挂了

        停止态:stopped  暂停于内存中,不可被调度并运行

    9、进程间通信机制(IPC: Inter Process Communication)

        同一主机上
            通过发送信号(通过kill命令):signal
            共享内存shm: shared memory
            semophore 信号量,一种计数器
        不同主机上:
            rpc: remote procedure call(NFS就是基于这种机制的)
            套接字socket: IP和端口号

    10、Linux系统状态的查看及管理工具: 

        pstree, ps, pidof,pgrep, top, htop, glance, pmap, vmstat, dstat, kill,pkill, job, bg, fg, nohup

第二章    进程管理类工具(ps、top、htop、kill)

    1、ps命令(ps、pgrep、pidof)

        ps命令:显示系统当前进程的运行情况,实际是将/proc/目录下的各个进程的相关信息转换为我们易读的模式展现出来

        选项与参数:

            -A  所有的进程都显示出来,与-e具有同样的效果

            a  与终端无关的所有进程

            u  以用户为中心显示与用户相关的进程信息

            x  通常与a一起使用,可列出较完整的信息

            输出格式定义:

                l  列出详细的信息

                j  工作的格式

                -f  完整格式列表,做一个更为完整的输出

                o 属性选项显示定制的信息:                  

                    psr  当前进程运行的CPU编号(四颗CPU就是0、1、2、3)

                    pri  当前进程的优先级

                    ni   当前进程的nce值(-20,19),nice值越低,优先级越高

                    pid  进程号

                    command  发起进程的命令

                    state  进程状态

                    %cpu   占用CPU的百分比

                    %mem   占用内存的百分比

                    tty    占用的终端

                    euser  进程的有效用户

                    ruser  进程的实际用户

                        有效用户和实际用户可用于验证设置了SUID权限的二进制程序文件运行时,有效用户为进程文件的属主用户,实际用户为运行程序文件的用户

        常用的组合方式:

            ps -ef  以完整的信息显示所有进程的信息

            ps aux  

            ps axo

    ps aux的显示出来的参数的意义

    [root@localhost ~]# ps aux    
    USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root          1  0.0  0.1  19352  1548 ?        Ss   Sep05   0:01 /sbin/i
    root          2  0.0  0.0      0     0 ?        S    Sep05   0:00 [kthre]
    root          3  0.0  0.0      0     0 ?        S    Sep05   0:00 [migra]
    root          4  0.0  0.0      0     0 ?        S    Sep05   0:00 [ksoft]
    root          5  0.0  0.0      0     0 ?        S    Sep05   0:00 [stopp]
    root          6  0.0  0.0      0     0 ?        S    Sep05   0:00 [watch]
    root          7  0.0  0.0      0     0 ?        S    Sep05   0:00 [migra]
    
    ——————————————————————————————————————
    USER:进程的发起者
    PID:进程号
    %CPU:进程占用掉的CPU资源的比例
    %MEM:进程所占用的物理内存百分比
    VSZ:进程使用掉的虚拟内存的大小,也就是内核虚拟出来的给该进程的线性地址空间的大小,
            假如分配给其1000k,或许实际并没有数据占用,单位为kb
    RSS:进程占用的固定物理内存的大小,实际占用的内存的大小,常驻内存集,也就是不能交换到swap分区上的数据的大小,单位为kb
        一个进程的数据部分分为指令和数据,程序在执行时,内存中的数据也分指令数据和实际的数据,
        其中指令数据和部分的实际数据,是不能被交换到交换分区上的,称之为常驻内存集,而有些数
        据是可以被交换到交换分区上的,称之为虚拟内存集
    TTY:进程在哪个终端运行
    STAT:进程目前的状态
        各状态的值代表的意义
            R  运行状态
    	S  可中断睡眠态
    	D  不可中断睡眠态
    	Z  僵死态
    	T  停止态
        有的进程在进程状态之后还会有其他字母,其分别代表的含义为:
    	s  seesion leader 会话领导者,主进程
    	N  低优先级进程
    	<  高优先级进程
    	l  多线程进程(小写的L)
    	+  前台进程,占据着某终端
    START:进程被触发的时间
    TIME:进程实际使用cpu的时间
    COMMAND:触发此进程的命令

    ps -ef显示出来的结果代表的意义

    [root@localhost ~]# ps -ef    
    UID         PID   PPID  C STIME TTY          TIME CMD
    root          1      0  0 Sep05 ?        00:00:01 /sbin/init
    root          2      0  0 Sep05 ?        00:00:00 [kthreadd]
    root          3      2  0 Sep05 ?        00:00:00 [migration/0]
    root          4      2  0 Sep05 ?        00:00:00 [ksoftirqd/0]
    root          5      2  0 Sep05 ?        00:00:00 [stopper/0]
    root          6      2  0 Sep05 ?        00:00:00 [watchdog/0]
    root          7      2  0 Sep05 ?        00:00:00 [migration/1]
    root          8      2  0 Sep05 ?        00:00:00 [stopper/1]
    root          9      2  0 Sep05 ?        00:00:00 [ksoftirqd/1]
    
    ——————————————————————————————————————
    UID:进程发起者的UID
    PID:进程号
    PPID:进程的父进程ID号
    C:CPU利用率,使用时间
    STIME:进程的启动时间,就是指从什么时候启动的进程
    TTY:登录者的终端位置,远程则显示pts/N 本地则显示ttyN,?代表是系统进程
    TIME:进程实际花费CPU的运行时间,不是系统时间
    CMD:触发此进程的命令

   

    pgrep命令:(基于ps aux显示出来的结果过滤)

        语法:pgrep [OPTIONS] “PATTERN”

        选项:

            -u uid: effective user,生效者
            -U uid: real user,真正发起运行命令者
            -t terminal: 与指定终端相关的进程
            -l: 显示进程名
            -a: 显示完整格式的进程名
            -P pid: 显示指定进程的子进程

            -G GID|GROUPNAME  仅显示以指定用户组身份运行的进程(只指定该选项只会显示出一列以该组身份运行的PID,配合-l选项使用,可显示进程的PID和进程名)

        blob.png

        

    pidof命令:根据进程名,取其PID(基于ps aux显示出来的结果过滤,只显示指定进程发起命令的PID)

        blob.png 

    2、top命令      

        top命令:

        语法:top [OPTIONS]

        选项:

            -d 数字  指定刷新时间间隔

            -n 数字  显示多少次

            -b   以批次显示top的刷新,要和-n 数字  一起使用,指定要显示多少批次

        进入top命令显示界面下常用的交互式的子命令:

            M键:可以按内存占用百分比大小排序

            P键:可以按CPU占用百分比大小排序,默认就是此项

            T键:可以按累计占用CPU时长大小排序

            q键:退出top交互式界面

            k键:可kill某个进程,进入交互式杀死某个PID进程

            s键:可指定刷新时间间隔,默认是3秒刷新一次

            W键:将结果保存到/root/.toprc文件中

            l键:是否显示第一分栏的负载信息

            t键:是否显示第一分栏的CPU信息

            m键:是否显示定义芬兰的内存相关信息

    top命令显示出来的内容的各个参数代表的意义

    [root@localhost ~]# top -n 1    
    top - 01:44:06 up 10:15,  2 users,  load average: 0.05, 0.04, 0.05
    Tasks: 144 total,   1 running, 143 sleeping,   0 stopped,   0 zombie
    Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:   1004136k total,   295800k used,   708336k free,    26872k buffers
    Swap:  1023996k total,        0k used,  1023996k free,   166232k cached

   PID USER      PR  NI  VIRT   RES   SHR  S   %CPU   %MEM    TIME+   COMMAND                                                                                       
  3700 root      20   0 15028  1152   836  R    2.0    0.1   0:00.01  top                                                                                            
     1 root      20   0 19352  1548  1228  S    0.0    0.2   0:01.55  init                                                                                
     2 root      20   0     0     0     0  S    0.0    0.0   0:00.04  kthreadd                                                                                        
     
 —————————————————————————————————————————
    top - 01:44:06 up 10:15,  2 users,  load average: 0.05, 0.04, 0.05
    分别表示:系统当前时间;持续多长时间;当前有多少个用户;
    平均负载1、5、15分钟的平均负载,是指cpu上等待运行的队列长度的负载,一般不会超过1
    如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能良好。 
    如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题
    如果linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了
    不想显示改行,就按l(小写的L)键
    
    利用uptime命令,显示出来的结果就是该行的结果
    
    Tasks: 144 total,   1 running, 143 sleeping,   0 stopped,   0 zombie
    分别表示:总共的进程数,正在运行进程数,睡眠状态进程数,停止状态进程数,僵尸状态进程数
    
    Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    分别表示cpu的占用时长百分比:
    us-用户空间占用百分比;
    sy-内核空间占用百分比;
    ni-调整nice值之后的进程占用的百分比;
    id-空闲百分比;wa-等待I/O完成的进程占用的百分比(该值大,代表硬盘速度慢);
    hi-为了处理硬件中断占用的百分比;
    si-为了处理软中断占用的百分比;
    st-被偷走的百分比,例如启动虚拟化后,虚拟化占用的cpu在主机看来就是被偷走的
    如果有多个CPU,显示的时候按1可以列出每颗CPU的占用情况,不想显示CPU相关信息,就按t键
    
    Mem:   1004136k total,   295800k used,   708336k free,    26872k buffers
    分别表示内存占用的相关信息:总内存大小;已用内存大小,空闲内存大小,缓冲大小
    (往硬盘上写时,硬盘速度慢,故先放到内存缓冲,再往硬盘上写;
        或许多小数据集中放在内存中,然后集中的往硬盘写,降低磁盘IO次数)  
    不想显示内存和swap的信息可以按m键
    
    Swap:  1023996k total,        0k used,  1023996k free,   166232k cached  
    表示swap交换分区的占用情况:总大小,已用大小,空闲大小,
    cache缓存大小,实际还是物理内存的cache,放在swap这里显示而已
        (硬盘上的数据往内存里存,方便CPU调用时的读取速率)
    
    PID:进程号
    USER:进程发起者
    PR:进程优先级,越小优先级越高
    NI:进程的nice值,越小优先级越高
    VIRT:进程需要的虚拟内存大小,而非实际使用的虚拟内存大小
    RES:进程当前使用的内存大小,不包括swap
    SHR:进程与其他进程共享的内存大小,可以通过RES-SHR来计算进程所占用的物理内存大小
    S:进程的状态
    %CPU:CPU的占用率
    %MEM:内存的占用率
    TIME+:CPU使用时间的累加

    3、htop命令:top命令的升级版,功能比top强大很多,默认没安装,只在epel yum源中有安装包,支持鼠标操作

        进入htop显示界面后的子命令:

            u  显示指定用户的进程

            H  显示或隐藏用户的进程

            K  显示或隐藏系统内核的进程

            M  可以按内存占用百分比大小排序

            P  可以按CPU占用百分比大小排序,默认就是此项

            T  可以按累计占用CPU时长大小排序

            l  显示进程所打开的文件列表

            s  显示进程执行的系统调用

            a  绑定进程到指定的CPU上,如果不指定则由内核调度

            数字  快速将光标定位至指定的PID进程上

            F1  显示帮助信息

            F2  进入交互式选定第一分栏中要显示的字段和字段内容的显示格式

            F3  搜索指定的内容

            F4  过滤只显示指定的内容

            F5  以tree方式显示进程的树形关系

            F6  指定排序的字段

    blob.png   

    4、kill命令

        进程间通信(IPC):

            同一主机进程间通信的几种机制:

                1、signal  信号

                2、semaphore  旗语

                3、share memory  共享内存

            不同主机上的进程间通信机制:

                1、跨主机的进程间通信  RPC (远程过程调用)

                2、socket 基于套接字通信,套接字就是IP和端口的集合

        kill命令:能够实现想起他进程发送信号,可使用的信号类型:(可用kill -l查看 或man 7 signal查看)

            常用的信号有:

                1信号 SIGHUP :通知程序重读配置文件,而不必重启程序来实现重读配置文件

                2信号 SIGINT :中断信号,Ctrl+c就是发送此信号给进程

                9信号 SIGKILL :杀死进程,直接杀死该进程

                15信号 SIGTERM :终止进程,让进程释放资源后杀死该进程

        向进程发信号的方法:

            kill -SIGNAL PID    kill 不指定发送哪个信号,则默认发送15信号

            SIGNAL可以是:

                数字代号,如1,9,15等

                信号名称,如SIGHUP等

                简写的信号名称,如HUP等

            如:kill -15 3132  对PID为3132的进程发送15号信号

    blob.png

        killall -SIGNAL 进程名

            可以一次性对所有进程名为指定名称的进程发送信号

            如:

            killall -15 httpd

    blob.png 

    

第三章    内存监控类工具(vmstat、pmap)

    1、vmstat命令

        vmstat语法:

           直接运行vmstat  显示当前的系统相关的使用信息,显示完成自动退出

           vmstat 数字  表示指定多少秒钟刷新一次,连续显示系统相关的信息,不会自动退出

           vmstat 数字1  数字2   表示指定数字1的秒数刷新一次,连续显示数字2指定的次数后自动退出

           vmstat -s  显示内存使用的摘要统计信息

    vmstat命令显示内容详解

    [root@localhost ~]# vmstat 2 5    
    procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs  us sy id  wa st
     1  0      0 707328  27584 166352    0    0     1     0   13    4   0  0 100  0  0	
     0  0      0 707296  27584 166352    0    0     0     0   44   17   0  0 100  0  0	
     0  0      0 707264  27584 166352    0    0     0     0   40   15   0  0 100  0  0	
     0  0      0 707264  27584 166352    0    0     0     0   40   21   0  0 100  0  0	
     0  0      0 707264  27584 166352    0    0     0     0   53   16   0  0 100  0  0	
    [root@localhost ~]# 
    
——————————————————————————————————————————————————
    procs:进程队列
        r:运行或等待CPU时间片的进程的个数(数值大,说明CPU不够用,或者跑的进程过多)
        b:不可中断睡眠的进程,被阻塞的进程队列长度(通常为等待IO完成的应用)
        
    memory:内存的相关信息
        swpd:从物理内存交换到swap上的数据量大小(有值或者值大,说明物理内存不够用)
        free:未使用的物理内存大小
        buff:缓冲空间大小,通常与缓存写操作相关
        cache:缓存空间大小,通常与缓存读操作相关
        
    swap:swap分区的相关信息
        si:swap in  从swap交换进内存的数据速率,通常是速率,kb/s
        so:swap out  从内存交换至swap的数据速率,通常是速率,kb/s
        
    io:跟磁盘IO相关的信息
        bi:block in 从块设备读入内存的数据量,通常是速率,kb/s
        bo:block out  从内存读出保存到块设备的数据量,通常是速率,kb/s
        
    system:跟系统相关的信息
        in:中断发生速率,也就是每秒钟产生的中断次数
        cs:context switch  上下文切换,也就是进程切换的速率,也就是每秒钟切换的次数
        
    cpu:跟cpu相关的信息(与top中的cpu的几个指标类似)
        us:用户空间占用的cpu的百分比
        sy:系统内核空间占用的cpu的百分比
        id:空闲的cpu百分比
        wa:等待IO完成所消耗的cpu百分比
        st:被偷走的cpu百分比(虚拟机偷走)

    2、pmap命令:显示指定PID进程所占用的内存地址空间的使用情况

        如:pmap 10  显示PID为10的进程所占用的内存的地址空间的情况

        也可以用过cat /proc/进程号/maps 来查看,pmap实际就是抽取这个文件里面的信息进行显示的

    1.png

第四章    系统监控类工具(glances、dstat)

    1、glances工具,系统上默认没有安装,需要通过EPEL源进行安装,功能强大,支持C/S架构模式进行远程查看

        内建命令:跟htop类似,可通过h进行查看

        命令的常用选项:

            -b  以byte为单位显示网上数据速率

            -d  关闭磁盘I/O模块

            -m  关闭mount模块

            -n  关闭network模块

            -t 数字  设定刷新时间间隔

            -1  每个cpu的相关数据单独显示

            -o 指定将显示结果输出到文件中,可支持html格式或csv格式,一般与-f选项一起使用,指定输出的路径,如:

                glances -o {HTML|CSV} -f /PATH/TO/SOMEDIR  

                只要glances不退出,输出的文件就会一直更新

        11.png

        C/S模式下运行glances命令:

            服务模式:

                glances -s -B IPADDR  -B指明本机所监听的地址

            客户端模式:

                glances -c IPADDR  IPADDR为远程服务器的地址

        

    2、dstat命令,非常强大的工具,对系统各类资源进行统计,可以实时的监控cpu、磁盘、网络、IO、内存等使用情况

        语法:dstat [-afv] [options..] [delay [count]]

        选项:

            -c:显示CPU系统占用,用户占用,空闲,等待,中断,软件中断等信息。

            -C:当有多个CPU时候,此参数可按需分别显示cpu状态,

                    例:-C 0,1 是显示cpu0和cpu1的信息。

            -d:显示磁盘读写数据大小。

            -D sda,sdb,…total:显示指定磁盘的使用情况

            -n:显示网络状态。

            -N eth1,total:有多块网卡时,指定要显示的网卡。

            -l:显示系统负载情况。

            -m:显示内存使用情况。

            -g:显示内存页面使用情况,显示的是速率数据。

            -p:显示进程相关统计数据状态。

            -s:显示swap交换分区使用情况。

            -S:类似D/N。

            -r:显示I/O请求相关情况。

            -y:系统状态。

            –ipc:显示ipc进程间通信的相关数据,消息队列,信号,旗语等信息。

            –tcp  显示tcp相关统计数据

            –udp  显示udp相关统计数据

            –socket:用来显示tcp udp端口状态。

            –top-cpu  显示最占用CPU的进程

            –top-mem  显示最占用内存的进程

            –top-io  显示最占用I/O的进程

            –top-latency  显示延迟最大的进程

            -a:此为默认选项,等同于-cdngy。

            -v:等同于 -pmgdsc -D total。

            –output 文件:此选项也比较有用,可以把状态信息以csv的格式重定向到指定的文件中,以便日后查看。

                例:

                dstat –output /root/dstat.csv & 此时让程序默默的在后台运行并把结果输出到/root/dstat.csv文件中

    dstat1.png

    dstat2.png    

    dstat3.png

    dstat4.png

    dstat5.png

    dstat6.png

    dstat7.png

原创文章,作者:M20-1倪文超,如若转载,请注明出处:http://www.178linux.com/44050

(1)
M20-1倪文超M20-1倪文超
上一篇 2016-09-07
下一篇 2016-09-07

相关推荐

  • gawk 语法介绍及其实例

    gawk 语法介绍及其实例  §·awk介绍 Linux文本处理三剑客:grep  sed 和 awk 。其中grep是一种文本过滤工具,sed是文本行编辑器,而awk是一种报表生成器,就是对文件进行格式化处理的,这里的格式化不是文件系统的格式化,而是对文件的内容进行的各种排版,进而格式化显示。 在linux之上我们使用awk是GUN a…

    Linux干货 2016-09-22
  • 26期全程班-第七周博客作业

    1、创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; # fdisk /dev/sda # mkf…

    Linux干货 2017-03-17
  • 第九周

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash for i in `cut -d':' -f7 /etc/passwd`;do &n…

    Linux干货 2016-09-26
  • Week9’s homework

    Week9's homework 1、写一个脚本(1)判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin)(2)分别统计两类用户的个数;通过字符串比较来实现。 #!/bin/bash # for i in $(cat /etc/passwd |…

    Linux干货 2016-12-24
  • 19道小米网运维工程师笔试真题,你能通关吗?

    第一部分:Linux基础 题目1: 有一百个图片文件,它们的地址都是 http://down.xiaomi.com/img/1.png http://down.xiaomi.com/img/2.png … 一直到http://down.xiaomi.com/img/100.png 批量下载这100个图片文件,并找出其中大于500KB的文件。 题目2: 一个文…

    2017-09-08