进程查看及命令使用-htop/dstat/top/ps命令

时间:2015-12-26 23:48:38   收藏:0   阅读:1879

    进程是linux用来表示正在运行的程序的一种抽象概念,程序内存的使用,处理器时间和I/O资源就是通过这个对象进行管理和监视的。

    一个程序要先运行在用户空间,当他需要去使用硬件资源的时候,就不得不去调动内核才能取得使用权,这时候调动内核,进入内核空间,当内核处理完毕需求之后,将指令返回给用户,一个调用完成。

    进程会以时间片段在CPU运行的,CPU以一根时间线被划分成无数个片段;当一个进程运行到某个阶段,需要暂时终止的时候,需要保存一个进程运行的现场,叫保存现场;执行到某片段的时候,需要中断,当再需要执行的时候,恢复现场。

    运行中的程序的某个副本才叫进程;进程有生命周期,进程时活动的。

    内核为每个进程都要创建一个运行信息,存储每一个进程的相关信息,及进程的结构体,即task struct。这里面的信息有:

        1.进程的地址空间映射;

        2.进程的当前状态(睡眠状态,停止状态,可运行状态等)

        3.进程执行的优先级;

        4.进程已用资源的信息;

        5.进程已打开的文件和网络端口的信息;

        6.进程的信号掩码(一个记录,确定要封锁哪些信号)

        7.进程属主。

    一个进程由一个地址空间和内核内部的一组数据结构组成。地址空间是内核标记出的供进程使用的一组内存页面。它包含了进程只在执行的代码和库,进程变量,进程栈以及进程运行时所需要的各种其他信息。

    一个线程是一个进程内执行了一次fork()的结果,线程继承了包含他的进程的许多属性(进程的地址空间等)。

        进程的调度优先级决定了他接受到CPU的时间的多少。nice值决定了进度优先级。静态nice值越小,优先级越高。

        为了创建一个新的进程,一个进程就会用系统fork来复制自身,fork创建原进程的一个副本,这个副本大致与父进程相同,新进程拥有不同的PID。

        fork具有独一无二的特性,它能够返回两个值,对子进程来说,返回为0,对父进程来说,返回一个PID。

        linux系统最独特进程时init进程。进程号总为1,他是其他进程的GOD,除了内核创建的几个进程外,其他所有进程都是他的后代。

    接下来看一些查看进程的命令:

1.ps命令:报告当前进程的信息

    选项;

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

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

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

所以第一个组合为:aux,示例:所有用户的进程信息

[root@localhost yum.repos.d]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.7  59772  7704 ?        Ss   12月25   0:13 /usr/lib/systemd/systemd --switched-root --system --deserialize 24
root          2  0.0  0.0      0     0 ?        S    12月25   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    12月25   0:03 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   12月25   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    12月25   0:00 [migration/0]

 显示的第一行的意义:

    VSZ:虚拟内存集;

    RSS:Resident Size,常驻内存集;

    STAT:状态

        R:running 运行中状态

        S:interruptable sleeping 可中断睡眠状态

        D:uninterruptable sleeping 不可中断睡眠状态

        T:Stopped 停止状态

        Z:zombie 僵死状态

        +:前台进程

        l:多线程进程

        N:低优先级进程

        <:高优先级进程

        s:session leader 


#2 选项:

    -e:显示所有进程

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

    常用组合之二:-ef,示例:

[root@localhost yum.repos.d]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 12月25 ?      00:00:13 /usr/lib/systemd/systemd --switched-root --system --deserialize 24
root          2      0  0 12月25 ?      00:00:00 [kthreadd]
root          3      2  0 12月25 ?      00:00:03 [ksoftirqd/0]
root          5      2  0 12月25 ?      00:00:00 [kworker/0:0H]
root          7      2  0 12月25 ?      00:00:00 [migration/0]

  第一行意义:

    PPID:父进程

    C:CPU的占用百分比

    STIME:启动时间

    TTY:与何终端相关

    TIME:CPU累积运行时间

#3选项

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

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

    常用组合之三:-eFH,示例

[root@localhost yum.repos.d]# ps -eFH
UID         PID   PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root          2      0  0     0     0   0 12月25 ?      00:00:00 [kthreadd]
root          3      2  0     0     0   0 12月25 ?      00:00:03   [ksoftirqd/0]
root          5      2  0     0     0   0 12月25 ?      00:00:00   [kworker/0:0H]
root          7      2  0     0     0   0 12月25 ?      00:00:00   [migration/0]

   第一行意义:

    PSR:运行于哪颗CPU之上

    SZ:使用掉的内存大小


#4选项

    o  field1, field2,...:自定义要显示的字段列表,以逗号分隔;

        常用的field:pid, ni, pri, psr, pcpu, stat, comm, tty, ppid, rtprio

            ni:nice值;

            priority:priority, 优先级;

            rtprio:real time priority,实时优先级;

常用组合::-eo, axo

    示例:仅显示进程PID及命令

[root@localhost yum.repos.d]# ps axo pid,command
   PID COMMAND
     1 /usr/lib/systemd/systemd --switched-root --system --deserialize 24
     2 [kthreadd]
     3 [ksoftirqd/0]
     5 [kworker/0:0H]
     7 [migration/0]

    

2.top命令:显示linux的进程信息

    排序:

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

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

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

    默认以占用CPU百分比排序,示例,以占用内存排序:  

top - 14:50:39 up 18:42,  2 users,  load average: 0.00, 0.02, 0.05
Tasks: 357 total,   1 running, 356 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.2 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem :  1003184 total,   600632 free,   165772 used,   236780 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   638776 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                 
   794 root      20   0  550176  16124   5628 S   0.3  1.6   0:13.51 tuned                                                                   
   840 root      20   0  103736  15640   3228 S   0.0  1.6   0:00.19 dhclient                                                                
  3351 root      20   0  103736  15624   3216 S   0.0  1.6   0:00.51 dhclient                                                                
   833 polkitd   20   0  516068  12656   4336 S   0.0  1.3   0:01.92 polkitd

     首部信息分为三块:

        uptime信息:l命令

        tasks及cpu信息:t命令

        内存信息:m命令

        其中第一行信息解释:

        显示系统时间、运行时长及平均负载;过去1分钟、5分钟和15分钟的平均负载;等待运行的进 程队列的长度;

        第三行:

            us:用户空间进程占用的CPU百分比

            sy:内核空间进程占用的CPU百分比

            ni:用于nice值调整占用的CPU百分比

            id:空闲百分比

            wa:等待IO消耗的时间CPU百分比

            hi:处理硬件中断消耗的CPU百分比

            si:处理软件终端小号的CPU百分比

            st:被虚拟环境偷走的CPU百分比

        

    进程状态字段含义:

            PR:进程优先级

            NI:nice值

            VIRT:虚拟内存集

            RES:常驻内存集

            SHR:共享内存空间

            S:当前状态

            %CPU:占用CPU时间百分比

            %MEM:占用内存百分比

            TIME+:运行时间


            

        退出命令:q

        修改刷新时间间隔:s

        终止指定的进程:k

示例:修改间隔时间,按s

top - 15:41:11 up 19:33,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 357 total,   1 running, 356 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.5 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1003184 total,   599760 free,   166632 used,   236792 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   637988 avail Mem 
Change delay from 3.0 to 2

    

示例,杀掉某进程,按k

top - 15:42:25 up 19:34,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 357 total,   2 running, 355 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.3 sy,  0.0 ni, 99.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1003184 total,   599916 free,   166476 used,   236792 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   638144 avail Mem 
PID to signal/kill [default pid = 794] 10064

使用选项:

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

        -b:以批次方式显示;

        -n #:显示多少批次;


3.htop 命令:与top类似,此命令需要手动安装。

    技术分享

  右边tasks只是用户空间的进程;

支持鼠标,点或者按F1进入帮助选项

技术分享

  选项:子命令

    u:查看某个用户进程    H:显示或隐藏用户线程    K;隐藏或显示内核线程

    F6:指定排序    F:光标在哪个线程    PMT:排序方式    c:标记出一个进程和子进程

    a:将选定的进程绑定至某指定的CPU核心;   l:跟踪显示某个进程打开的所以文件

    s:跟踪选定的进程的系统调用;    t:以层级关系显示各进程状态;

选项:

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

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

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

    可以利用子命令进行想要的显示。



4.dstat命令:用于生成资源信息统计的工具。默认给的选项是-cdngy

    格式:dstat [-afv] [options..] [delay [count]]

    常用选项:

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

            -C #,#,...,total

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

            -D sda,sdb,...,tobal

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

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

        -m:Memory的相关统计数据

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

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

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

        -y:system

示例:

    

[root@mageedu yum.repos.d]# dstat -c
----total-cpu-usage----
usr sys idl wai hiq siq
  0   0 100   0   0   0
  0   0 100   0   0   0
[root@mageedu yum.repos.d]# dstat -d
-dsk/total-
 read  writ
1669B 2432B

  

[root@mageedu yum.repos.d]# dstat -cdgmnprs
----total-cpu-usage---- -dsk/total- ---paging-- ------memory-usage----- -net/total- ---procs--- --io/total- ----swap---
usr sys idl wai hiq siq| read  writ|  in   out | used  buff  cach  free| recv  send|run blk new| read  writ| used  free
  0   0 100   0   0   0|1663B 2425B|   0     0 | 148M 98.2M  477M  258M|   0     0 |0.0   0 0.3|0.10  0.17 |   0  2048M
  0   0 100   0   0   0|   0    32k|   0     0 | 148M 98.2M  477M  258M| 180B 1306B|  0   0   0|   0  3.00 |   0  2048M
  0   1 100   0   0   0|   0     0 |   0     0 | 148M 98.2M  477M  258M|2202B  506B|  0   0   0|   0     0 |   0  2048M
  0   0  99   0   0   0|   0     0 |   0     0 | 148M 98.2M  477M  258M|  60B  506B|  0   0   0|   0     0 |   0  2048M
  0   0 100   0   0   0|   0     0 |   0     0 | 148M 98.2M  477M  258M| 410B  506B|  0   0   0|   0     0 |   0  2048M


     

        --aio:统计异步IO

        --ipc:统计进程间各自通信信息(消息队列,信号量,共享内存)

        --lock:文件锁信息:

        --tcp:动态显示TCP状态各连接状态信息的数量

        --udp:动态显示UDP状态各连接状态信息的数量

        --raw :裸套接字相关信息

        --socket 用来显示tcp udp端口状态

示例:

[root@mageedu yum.repos.d]# dstat --tcp --aio --ipc --lock --socket
----tcp-sockets---- async --sysv-ipc- ---file-locks-- ------sockets------
lis act syn tim clo| #aio|msg sem shm|pos lck rea wri|tot tcp udp raw frg
 13   1   0   0   0|   0 |  0   3   0|2.0 4.0   0 6.0|449   7   6   0   0
 13   1   0   0   0|   0 |  0   3   0|2.0 4.0   0 6.0|449   7   6   0   0
 13   1   0   0   0|   0 |  0   3   0|2.0 4.0   0 6.0|449   7   6   0   0

  


  #还可显示占用资源量较大的进程

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

[root@mageedu yum.repos.d]# dstat --top-cpu
-most-expensive-
  cpu process   
events/1     0.1
                
httpd        0.5
                
sshd: root@pt0.5
irqbalance   0.5

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

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

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

    

    以上即为dsta的用法。

本文出自 “10917621” 博客,谢绝转载!

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!