一、概述

   htop、top、dstat、ps是Linux系统上的进程的查看及管理的工具;可以帮助我们快速的去查找和定位问题,并可以对当前系统的运行状况及使情况进行实时打印;


二、进程

   在系统启动后全产生许多进程,进程就是运行中的程序的一个副本,进程是有生命周期的,一般会随着自身所在bash的关闭而关闭,所有进程都是在系统启动后由/sbin/init来创建的,而进程之间存在父子关系,所有的子进程都是由其父进程创建的;

   进程与进程间存在优先级:1-139 

                      1-99:实时优先级

                     100-139:静态优先级

   为了让CPU可以在同时处理多个进程,通常会对CPU划分多个时间片,每个时间片按时间长度(5秒)来依次运算每个需要处理的进程,所以CPU在一个进程运算5秒钟之后会把当前这个进程踢出,然后调入下一个进程继续处理,以此类推;在保证被踢出去的这个进程处理一半的数据不会丢失,Linux内核会在task struct中进行存储,task struct会有两个,一个是要处理的进程的task struct,另一个为处理过的task struct,当处理中的task struct被CPU遍历完成后,内核会把处理过的task struct当作要处理进程的task struct给CPU继续处理,依次类推;CPU在task struct调取进程时会按优先级进程处理;

  如图:

  htop/dstat/top/ps命令的使用_Linux

   进程类型: 

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

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

                注意:也可把在前台启动的进程送往后台,以守护模式运行;


   进程状态:

     运行态:running

     就绪态:ready

     睡眠态:

        可中断:interruptable

        不可中断:uninterruptable

     停止态:暂停于内存中,但不会被调试执行,除非手动启动之:stopped

     僵死态:zombie


三、命令的使用:

    

     ps - report a snapshot of the current processes.

          ps [options]:

             选项有三种风格:UNIX、BSD、GNU

             启动进程的方式:

                系统启动过程中自动启动;与终端无关的进程;

                用户通过终端启动;与终端相关的进程;

             选项:

                a: 所有与终端相关的进程;

                x: 所有与终端无关的进程;

                u: 以用户为中心来组织进程状态信息显示;


              常用组全之一:aux

                VSZ: 虚拟内存集;

                RSS: Resident Size 常驻内存集;

                C: CPU的占用百分比;

                STAT: 

                  R: 运行

                  S: 可中断睡眠

                  D: 不可中断睡眠

                  T: 停止

                  Z: 僵死


                  +: 前台进程:

                  l: 多线程进程;

                  N:低优先级进程;

                  <: 高优先级进程;

                  s: session leader会话领导者


                  -e: 显示所有进程;UNIX风格;

                  -f: 显示完整格式的进程信  息;


                常用组合之二:-ef

                 -F: 显示完整格式的进程信息;

                    C: cpu utilization

                    PSR: 运行于哪颗CPU之上;

                 -H:以层级结构显示进程的相关信息;

   htop/dstat/top/ps命令的使用_Linux_02

     

     top命令:

        display Linux processess


            排序:

                P: 已占据CPU百分比排序;

                M: 已占据内存百分比排序;

                T: 累积占用CPU时间排序;


            首部信息:

                uptime信息:l命令开启或关闭;

                tasks及cpu信息:t命令开启或闭;

                内存信息:m命令开启或关闭;

                cpu信息:数字1开启或关闭;


            退出命令:q

            修改刷新时间间隔:s

            终止指定的进程:k


            选项:  

                -d #: 指定刷新时间间隔,默认为2秒;

                -b: 以批次方式显示;

                -n #:显示多少批次;

    第一行:系统时间、运行时长、登录用户数、平均负载(过去1分钟、5分钟、15分钟)

    第二行:总任务数、运行数、睡眠数、停止数、僵死数

    第三行:CPU: us:用户空间、sy:内核空间、ni:Nice值额外占用时间、id:空闲时间、wa:等待时  间、hi:硬中断消耗百分比、si:软中断消耗百分比、st:虚拟化分走的时间比

    第四行:内存总数、使用的、空闲的、缓冲的

    第五行:交换分区总数、使用的、空闲的、缓存的

 htop/dstat/top/ps命令的使用_优先级_03

    

   

    dstat命令:

      dstat [-afv] [options...] [delay [count]]

       常用选项:

            -c, --cpu: 显示cpu相关信息;

                -C #,#...,total

            -d, --disk: 显示磁盘的相关信息;

                -D sda,sdb,...,total

            -g: 显示page相关的速率数据;

            -m: Memory的相关统计数据;

            -n: Interface的相关统计数据;

            -p: 显示process的相关统计数据;

            -r: 显示io请求的相关的统计数据;

            -s: 显示swapped的相关统计数据;

     htop/dstat/top/ps命令的使用_优先级_04


            --tcp:显示tcp协议状态;

            --udp:显示udp协议状态;

            --raw:显示raw状态;

            --socket:显示套接字状态;

     htop/dstat/top/ps命令的使用_优先级_05


            --ipc:显示ipc状态;

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

            --top-io: 显示最占用io的进程;

            --top-mem: 最占用内存的进程;

            --top-lantency: 延迟最大的进程;

     htop/dstat/top/ps命令的使用_程序_06


    

     htop命令:top的升级版;

       (系统不自带,需手动进行安装)

        选项:

           -d #:指定延迟时间间隔;

           -u UserName:仅显示指定用户的进程;

           -s COLUME: 以指定字段进行排序;

        子命令:

           l:显示选定的进程打开的的文件列表;

           s:跟踪选定的进程的系统调用;

           t:以层级关系显示各进程状态;

           a:将选定的进程绑定至某指定的CPU核心;

    htop/dstat/top/ps命令的使用_程序_07

   按F1可进入帮助页:

    htop/dstat/top/ps命令的使用_程序_08

   也可在首页按F2进行CPU、MEM、SWAP的显示效果进行设置:

    htop/dstat/top/ps命令的使用_程序_09

  

   按t可以按层级树显示: 

   htop/dstat/top/ps命令的使用_优先级_10


  另:htop下用户也可以通过鼠标来快速定位要查看的进程!