当系统运行较慢或我们的服务访问较慢时,我们会查看系统进程运行的状态,来查找原因,本文介绍一下几个与进程查看相关的命令以及其用法:

      top:动态查看进程的变化,top可以持续检测进程运行的状态,在默认情况下,每次更新进程资源的时间为3秒,不过,可以使用-d来进行修改。

      top命令用法:top[-d 数字]top [-bnp]

      参数:

           -d:后面可以接秒数,就是整个进程界面更新的秒数,默认是3秒;

           -b:以批次的方式执行top,通常会搭配数据流重定向来将批处理的结果输出成为文件;

           -n#:显示多少批次,和-b一起使用

           -p:查看指定PID的进程信息·

      top执行过程中可以使用的按键命令:

           ?:显示在top当中可以输入的按键命令;

           k:给予某个PID一个进程号

           r:给予某个PID重新制定一个nice

top主要分为两个界面,上面的界面为整个系统的资源使用状态,基本上总共有六行,如图所示:

     

      第一行(top...):可以按"l"键取消显示或显示此行信息;这一行显示的信息分别为

           21:58:16 目前的系统时间

           up 29 min 开机到目前为止所经过的时间

            2users 已经登录系统的用户人数

           load average 系统在1,5,15分钟的平均工作负载,代表的是过去1分钟、5分钟、15分钟平均cpu上的等待进程数

      第二行(Tasks...):显示的是目前进程的总量与个别进程在什么状态。比较需要注意的是最后的zombie那个数值,如果不是0,需要看看到底是哪个process变成僵尸了。

      第三行(%Cpu):显示的是CPU的整体负载。其中,us代表用户空间占用CPU百分比;sy代表系统空间占用CPU百分比;ni代表用户进程空间内改变过优先级的进程占用CPU百分比;id代表空闲空间百分比;wa代表等待进程占用CPU百分比;hi代表处理硬件中断占用CPU百分比;si代表处理软件中断占用CPU百分比;st代表被虚拟化程序占用的CPU百分比。需要注意的是wa,这个选项代表的是I/Owait,通常系统会变慢都是I/O产生的问题比较大。因此,这里需要注意这个选项耗用CPU的资源。如果是多内核的设备,可以按下数字"1"来切换成不同CPU的负载率。注意:第二行和第三行的内容可以按"t"键取消显示或改变显示方式

      第四行与第五行:表示目前的物理内存与虚拟内存的使用情况,要注意的是swap的使用量要尽量少,如果swap被大量使用,表示系统的物理内存不足。可以按下"m"键改变显示方式或取消显示;

      第六行:显示各进程的状态;

           PID:每个进程的ID

           USER:该进程所属的用户;

           PR:进程的优先执行顺序,越小越早被执行

           NInice值。负值表示高优先级,正值表示低优先级

           VIRT:进程使用的虚拟内存总量。VIRT=SWAP+RES

           RES:进程使用的、未被换出的物理内存大小。RES=CODE+DATA

           SHR:共享内存大小

           S:代表进程的状态

                 D=不可中断的睡眠状态
            R=
运行
            S=
睡眠
            T=
跟踪/停止
            Z=
僵尸进程

                 +:前台进程

             l:多线程进程

             N:低优先级进程

                 <:高优先级进程

                 ssessionleader

           %CPU:进程运行占用CPU百分比

           %MEM:进程占用内存百分比

           TIME+:进程使用的CPU时间总计

           COMMAND:命令名

      top默认按CPU使用率排序,如果要按内存使用率排序,可以按下"M";如果要按占用CPU时间排序可以按下"T";如果按进程号排序可以按下"N";按下z则可以高亮显示颜色;如果要返回按CPU使用率排序可以按下"P";如果要退出top可以按下"q"

     

      htop:与top相比,htop更加人性化。它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。如图所示是htop的显示结果:

      上面左上角显示CPU、内存、交换区的使用情况,右边显示任务、负载、开机时间,下面就是进程实时状况。

      下面是 F1~F10 的功能和对应的字母快捷键。

           F1:查看htop的使用帮助,用h?也可以显示此功能,如图所示:

                

           F2:设置htop,如图所示:可以设置左上角和右上角显示的内容以及颜色设置等,使用S也可以显示此功能;

                

           F3:搜索进程,使用/也可以显示此功能,如图所示:

                

           F4:增量进程过滤器,相当于关键字搜索,不区分大小写,也可以用\打开此功能;如图所示:

                

           F5:显示属性结构,和pstree差不多,也可以用t打开此功能:

           F6:选择排序方式,也可以使用<>来选择;

           F7:可减少nice值,这样就可以提高对应进程的优先级,也可以使用[实现此功能

           F8:可增加nice值,这样就可以降低对应进程的优先级,也可以使用]实现此功能;

           F9:可对进程传递信号,也可以使用k键实现此功能;

           F10:退出htop,也可以和top一样使用q;

      命令行选项:

         -C 使用一个单色的配色方案

           -d 设置延迟更新时间,单位秒

           -h 显示htop 命令帮助信息

           -u 只显示一个给定的用户的过程

           -p 只显示给定的PIDs

           -s 依此列来排序

           -v 显示版本信息

 

      ps命令:ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。ps是通过查看/proc中的信息来查看内核信息的。

      选项:

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

                

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

                

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

                

           常用组合:aux

                

                 USER:该 process 属于那个使用者账号的

                 PID :该 process 的号码

                 %CPU:该 process 使用掉的 CPU 资源百分比

                 %MEM:该 process 所占用的物理内存百分比

                 VSZ :该 process 使用掉的虚拟内存量 (Kbytes)

                 RSS :该 process 占用的固定的内存量 (Kbytes)

                 TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?

                 STAT:该程序目前的状态,主要的状态有

                      R :该程序目前正在运作,或者是可被运作

                      S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。

                      T :该程序目前正在侦测或者是停止了

                      Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸程序的状态

            START:该 process 被触发启动的时间

            TIME :该 process 实际使用 CPU 运作的时间

            COMMAND:该程序的实际指令

           -e:显示所有进程

                

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

                

.          常用组合:-ef

                

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

       

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

       

     常用组合:eFH

       

           o filed,filed2,... 自定义要显示的字段;比如结果中只显示进程号和命令:

                

 

      dstat命令:

           dstat非常强大,可以实时的监控cpu、磁盘、网络、IO、内存等使用情况。

           直接使用dstat,默认使用的是-cdngy参数,分别显示cpudisknetpagesystem信息,默认是1秒显示一条信息。可以在最后指定显示一条信息的时间间隔,如dstat 5是每5秒显示一条,dstat 5 3表示每5秒显示一条,一共显示3条。如图所示为dstat默认的输出结果:

                

           常用选项:

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

                     

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

                     

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

                     

                 -mMemory的相关统计数据;

                     

                 -nInterface的相关统计数据;

                     

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

                     

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

                     

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