设为首页 收藏本站
查看: 583|回复: 0

[经验分享] Linux进程管理命令之ps、dstat、top、htop

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-28 10:53:13 | 显示全部楼层 |阅读模式
    Linux的进程及cpu、内存等状况的监测是一件非常重要的事情。这里介绍几个比较常用的工具。

概述:ps命令、dstat命令、top命令、htop命令
一、ps命令 - 进程状态查看工具
  工作机制:通过抽取内核提供的/proc/PID(每个进程的PID,有多个)目录下的各进程状态来显示给用户以供查看。

  使用格式:ps[options]
   选项有三种风格:

    1、UNIX风格,选项可以组合在一起且前面跟一个短横线。
    2、BSD风格,选项可以组合在一起且前面可以不跟一个短横线。
    3、GNU风格,是长选项,前面必须跟两个短横线。

   BSD选项:

    a:显示与终端有关的进程,即用户通过终端启动的进程
    x:显示与终端无关的进程,即系统启动过程中自动启动等情况的进程
    u:以用户为中心组织进程显示方式
    o field1,field2, …:自定义要显示的字段列表
      常用的field:
     pid(进程号)、ni(nice值)、psr(进程所属处理器)、pri(priority,优先级)、pcpu(cpu占比)、
     stat(状态)、rtprio(实时优先级)、comm(发起进程的程序)、tty(终端)、ppid(父进程号)
   常用组合:aux
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# ps aux
# 此处仅截取部分
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1  19364  1536 ?        Ss   13:58   0:02 /sbin/init
root          2  0.0  0.0      0     0 ?        S    13:58   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    13:58   0:00 [migration/0]
root          4  0.0  0.0      0     0 ?        S    13:58   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S    13:58   0:00 [stopper/0]
root          6  0.0  0.0      0     0 ?        S    13:58   0:00 [watchdog/0]
root          7  0.0  0.0      0     0 ?        S    13:58   0:00 [migration/1]
root          8  0.0  0.0      0     0 ?        S    13:58   0:00 [stopper/1]
root          9  0.0  0.0      0     0 ?        S    13:58   0:00 [ksoftirqd/1]
root       2438  0.0  0.2  12584  2844 ?        S<   13:59   0:00 /sbin/udevd -d
root       2439  0.0  0.2  12584  2836 ?        S<   13:59   0:00 /sbin/udevd -d
root       3822  0.0  0.1 108332  1856 tty1     Ss+  15:22   0:00 -bash
root       4197  0.0  0.4  99968  4036 ?        Ss   15:29   0:02 sshd: root@pts/1
root       4201  0.0  0.1 108440  1876 pts/1    Ss   15:29   0:00 -bash
root       8096  0.0  0.0 100904   572 ?        S    21:22   0:00 sleep 60
root       8097  0.0  0.1 110232  1128 pts/1    R+   21:22   0:00 ps aux



  这里解释一下显示的条目

     USER:这个进程的属主
     PID:进程的PID号
     %CPU:占据cpu时间的百分比

     %MEM:占据内存的百分比

     VSZ:占用的虚拟内存大小

     RSS:占用的常驻内存内存大小

     TTY:在哪个终端启动,?表示与终端无关

     START:进程开始的时间

     TIME:累积消耗的cpu时间

     COMMAND:发起进程的程序,[]内的程序为内核启动

    STAT:进程状态

        R:运行态
         S:可中断睡眠态
         D:不可中断睡眠态
                                        T:停止态
         Z:僵死态
         +:前台进程
         l:多线程进程
         N:低优先级进程
         <:高优先级进程
         s:会话头(进程组的集合称为一个会话,而登录shell即为会话头)

   UNIX选项:
        -e:显示所有进程
        -f:显示完整格式的进程信息
        -F:显示更完整格式的进程信息
        -H:以层级结构显示进程的相关信息
1
2
3
4
5
6
7
# ps -efH
#  此处仅截取部分
UID         PID   PPID  C STIME TTY          TIME    CMD
root       2143      1  0 13:59 ?        00:00:00   /usr/sbin/sshd
root       4197   2143  0 15:29 ?        00:00:02     sshd: root@pts/1
root       4201   4197  0 15:29 pts/1    00:00:00       -bash
root       8108   4201  0 21:23 pts/1    00:00:00         ps -efH



   常用组合:

        1、-ef(同ps aux 显示效果相同)

        2、-eF
          比-ef多显示两项:

C:cpu的占用百分比
PSR:运行在哪颗CPU之上
        3、-eo,axo (o必须写在最后面)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# ps -eo pid,psr,comm
   PID PSR COMMAND
     1   0 init
     2   3 kthreadd
     3   0 migration/0
     4   0 ksoftirqd/0
     5   0 stopper/0
     6   0 watchdog/0
     7   1 migration/1
     8   1 stopper/1
     9   1 ksoftirqd/1
    10   1 watchdog/1
    11   2 migration/2
    12   2 stopper/2
    13   2 ksoftirqd/2
    14   2 watchdog/2
    15   3 migration/3
    16   3 stopper/3
    17   3 ksoftirqd/3



二、dstat命令 -- 查看系统资源信息的一个精巧的工具
  使用格式:dstat[-afv] [options..] [delay [count]]
    -a:默认显示格式
1
2
3
4
5
6
# dstat -a 1 2
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
  0   0 100   0   0   0|6087B 1121B|   0     0 |   0     0 |  22    18
  0   0 100   0   0   0|   0     0 | 120B  826B|   0     0 |  30    23
  0   0 100   0   0   0|   0     0 | 120B  346B|   0     0 |  62    37



    -f:将各cpu状态都显示出来以及其他信息
wKiom1Z_-m7wBSAmAAAjC9n31Kw470.jpg
    -v:显示进程相关状态及其他信息
wKiom1Z_-07CVjzwAAAhoRXAq7Q734.jpg
    delay:延迟多少秒显示一次

    count:总共显示多少次   
常用选项:
-c,--cpu:显示cpu相关信息
-C cpunumber,#,….,total
-d,--disk:显示磁盘相关信息
-D sda1,sdb1,......,total
-g:显示page相关的速率数据
-m:内存的相关统计数据
-n:网卡接口的相关统计数据
-p:显示进程的相关统计数椐
-r:显示io请求的相关数据
-s:显示交换分区的相关统计数据
--tcp:显示tcp连接状态
--udp:显示udp连接状态
--raw:显示裸套接字状态
--socket:显示套接字状态
--ipc:显示进程间通信状态(消息队列msg,信号sem,共享内存shm)
--top-cpu:显示最占用CPU的进程;
--top-io:最占用io的进程
--top-mem:最占用内存的进程
--top-lantency:延迟最大的进程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# dstat -C 1 1 2
-------cpu1-usage------ -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
  0   0 100   0   0   0|6079B 1121B|   0     0 |   0     0 |  22    18
  0   0 100   0   0   0|   0     0 |  60B  826B|   0     0 |  21    15

# dstat -n 1 2
-net/total-
recv  send
   0     0
  60B  202B
  60B  154B

# dstat --ipc 1 2
--sysv-ipc-
msg sem shm
0   2   0
0   2   0
0   2   0

# dstat --top-cpu 1 2
-most-expensive-
cpu      process   
vmmemctl 0.0

vmmemctl 3.0



三、top命令 -- 实时查看系统进程状态的交互式工具
   使用格式:top-hv|-bcHiOSs -d secs -n max -u|U user -p pid -o fld -w [cols]
      
  1)打开:

    键入top即可打开

        -d secs:指定刷新间隔,单位是秒;默认3秒
        -b:以批次方式显示(换屏显示)
        -n max:指定以-b方式显示多少次结束;
    wKiom1aAAMfDQa-FAABpJKLFivI097.jpg
   2)显示字段解释和交互操作方式
    1、头部显示字段
    第一行显示时间、系统运行时长、用户数量、负载情况;使用 l 可以显示或者取消显示;

        其中负载情况的三个数字分别是1分钟,5分钟,10分钟的平均负载状况

     第二行显示各状态进程数量统计;和第三行一起使用 t 可以显示或者取消显示;
    第三行显示cpu使用状况,us(用户空间进程所占百分比)、sy(内核空间所占百分比)、ni(nice值调整所占百分比)、id(cpu空闲百分比)、wa(等待IO的进程所占百分比)、hi(硬件中断所占百分比)、si(软件中断所占百分比)、st(被虚拟程序偷走的cpu时间所占百分比);使用数字 1 可以显示各cpu使用状况。
    第四行和第五行显示内存和交换分区被使用状况;使用 m 可以显示或者取消显示;

   2、显示字段

    PID:进程号;

    USER:发起进程的用户

    PR:进程优先级

    NI:nice值

    VIRT:进程所占虚拟内存大小

    RES:进程所占常驻内存大小

    SHR:进程所占共享内存大小

    S:进程当前状态

    %CPU:进程所占cpu的百分比

    %MEM:进程所占内存的百分比

I     TIME+:累积所占cpu的时长

     COMMAND:发起此进程的程序

   3、交互操作方式
     退出命令:q
     修改刷新时间间隔:s
     终止指定进程:k;敲k之后输入进程号即可
     获取帮助:h或者?
     改变显示色彩:z
    排序:

P:以占据CPU百分比排序
M:以占据内存百分比排序
T:以累计占用CPU时间排序
四、htop命令 --- top命令的替代工具,亦是一款实时查看进程状况的工具

  1)仅用htop就可打开
     使用格式: htop [-dChusv]
      选项:

        -d secs:打开前指定刷新间隔,单位是十分之一秒;默认为2秒

          -C:无颜色显示

          -h:显示帮助信息
          -u USER:显示指定用户发起的进程
          -s COLUMN:以指定列为参考进行排序
       wKiom1aAECfA156SAADOwyDzYEA070.jpg
2)字段解释及交互
  1、字段解释:
    大部分同top命令显示格式,请参阅上面top字段解释;不同之处在于左上角的1~4分别显示了不同的cpu的占用百分比。Task仅显示用户空间进程的数量,其中有一项thr是线程数;
    wKiom1aAEz_Qjr2VAABgvwRhgdk448.jpg
这里值得注意的是不同颜色去区分cpu、内存等的使用具体状况。字段和top显示一样。

  2、交互

    (1)可以使用鼠标操作。

    (2)常用的交互命令   
1)l:显示选定的进程打开的文件列表

wKiom1aAFEjCIiIjAABfGAPt3lE762.jpg

2)s:跟踪选定的进程

wKioL1aAFMnADv60AAAuunxSL0w990.jpg

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

wKiom1aAFO3yTeu8AADSJVPoX0M600.jpg
    注意:可使用鼠标或者上下键来选定用户
     4)H:是否显示用户线程数;默认显示
     5)K:是否显示内核线程数;默认隐藏
    6) F:指定光标

     7)P M T:根据cpu使用百分比、内存使用百分比、cpu占用累计时间来排序   

    8)F6 >:根据选定字段列为依据进行排序

    9)q:退出htop

    10)h:打开帮助

  小结:htop是一款十分精巧的工具,这里只是简单介绍了它的基本使用;更多的用法有兴趣者可以继续通过帮助文档学习。

注:本文所用示例均来自CentOS系统。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-157359-1-1.html 上篇帖子: CMake Error at /usr/share/cmake/Modules/FindKDE4.cmake:58 (message) 下篇帖子: Linux命令之scp Linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表