• ps


    3.man ps


    3.1.SIMPLE PROCESS SELECTION

    选项

    说明

    -A 所有进程,等于“-e”
    -e 所有进程,等于“-A”
    T 当前终端相关的所有进程。等于“ps -t”的选项不带参数
    r 限定打印哪些正在运行的进程

    示例:T

    [view@file ~]$ ps T
      PID TTY      STAT   TIME COMMAND
    19358 pts/2    Ss     0:00 -bash
    19711 pts/2    R+     0:00 ps T
    [view@file ~]$ echo $$
    19358
    [view@file ~]$ ps -t
      PID TTY      STAT   TIME COMMAND
    19358 pts/2    Ss     0:00 -bash
    19723 pts/2    R+     0:00 ps -t
    

    3.2.PROCESS SELECTION BY LIST

    选项 说明 示例

    -123

    123

    等于“--pid 123” 3.2.1
    -C cmdlist

    按照“命令名称”列表,选择命令运行的进程状态

    3.2.2

    -G grplist

    --Group grplist

    依据“组ID”(真实组id,或组名称)列表查看进程状态。真实的组id标识了创建进程的用户组。

    3.2.3

    p pidlist

    -p pidlist

    --pid pidlist

    显示进程号如列表pidlist 3.2.4
    --ppid pidlist

    通过指定“父进程”的ID,显示子进程的状态

    3.2.5

    -s sesslist

    --sid sesslist

    指定“会话ID”列表,显示其进程状态 3.2.6

     t ttylist

    -t ttylist

    --tty ttylist

     依据“终端”列表,查看进程状态

      “t ttylist”,允许列表为空,效果等于“T”

     3.2.7

    U userlist

    -u userlist

    --user userlist

    选择“有效的”用户ID(EUID)或用户名称……

    EUID:进程使用其访问权限的用户

    3.2.8

    -U userlist

    --User userlist

    ……

    RUID:创建进程的用户

    3.2.8

    示例3.2.1:查看pid为1的进程信息

    [view@app47 ~]$ ps -1
      PID TTY      STAT   TIME COMMAND
        1 ?        Ss    13:08 /usr/lib/systemd/systemd --system --deserialize 21
    [view@app47 ~]$ ps 1
      PID TTY      STAT   TIME COMMAND
        1 ?        Ss    13:08 /usr/lib/systemd/systemd --system --deserialize 21
    [view@file ~]$ ps -861 -864
      PID TTY      STAT   TIME COMMAND
      861 ?        Ss     0:01 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
      864 ?        Ss     0:36 /usr/sbin/ntpd -u ntp:ntp -g
    

     示例3.2.2:查看httpd、nginx进程

    [view@file ~]$ ps -C httpd,nginx
      PID TTY          TIME CMD
     2842 ?        00:03:32 httpd
    10519 ?        00:04:52 nginx
    10526 ?        00:04:56 nginx
    32767 ?        00:00:00 httpd
    ……
    

     示例3.2.3:显示"组ID"为994,1005的进程状态

    [view@file ~]$ ps -G 994,1005 -o pid,gid,tty,time,comm
      PID   GID TT           TIME COMMAND
     2846  1005 ?        00:00:00 httpd
    19692  1005 ?        00:00:00 httpd
    20282   994 ?        00:00:05 rsync
    20285   994 ?        00:00:05 rsync
    20317   994 ?        00:00:04 rsync
    29946   994 ?        00:00:00 httpd
    32767  1005 ?        00:00:00 httpd
    ……
    

     示例3.2.4:进程列表批量查看进程状态

    [view@file ~]$ ps -p 861,864
      PID TTY          TIME CMD
      861 ?        00:00:01 vsftpd
      864 ?        00:00:36 ntpd
    

     示例3.2.5:查看“父ID”为2842,15310,10517的所有进程,输出按照PPID从小到大排序

    [view@file ~]$ ps --ppid 2842,15310,10517 -o pid,ppid,tty,time,comm | sort -k 2n
      PID  PPID TT           TIME COMMAND
    11229  2842 ?        00:00:00 httpd
    19632  2842 ?        00:00:00 httpd
    ……
    10521 10517 ?        00:04:57 nginx
    10522 10517 ?        00:04:56 nginx
    10519 10517 ?        00:04:52 nginx
    ……
    22543 15310 ?        00:00:00 httpd
     2846 15310 ?        00:00:00 httpd
    32767 15310 ?        00:00:00 httpd
     4394 15310 ?        00:00:00 httpd
    ……
    

     示例3.2.6:查看“会话ID”为10517,2842的进程状态

    [view@file ~]$ ps -s 10517,2842 -o pid,ppid,sid,tty,time,cmd
      PID  PPID   SID TT           TIME CMD
     2842     1  2842 ?        00:03:33 /usr/local/http2.0.65_Rsyncd-logs/bin/httpd -k start
     8556  2842  2842 ?        00:00:00 /usr/local/http2.0.65_Rsyncd-logs/bin/httpd -k start
    10517     1 10517 ?        00:00:00 nginx: master process /usr/sbin/nginx
    10518 10517 10517 ?        00:04:54 nginx: worker process
    10520 10517 10517 ?        00:04:54 nginx: worker process
    11229  2842  2842 ?        00:00:00 /usr/local/http2.0.65_Rsyncd-logs/bin/httpd -k start
    

     从上边这个命令的输出,可以猜测:会话id就是进程id或者父进程的进程id,验证一下。

    [view@file ~]$ ps --ppid 1 -o pid,ppid,sid,cmd
      PID  PPID   SID CMD
      373     1   373 /usr/lib/systemd/systemd-journald
      534     1   534 /sbin/agetty --noclear tty1 linux  853     1   853 /usr/sbin/sshd -D
    21353     1 21353 /usr/local/aegis/aegis_update/AliYunDunUpdate
    ……
    

    示例3.2.7:依据tty(终端号)查看进程状态

    [viewk@file ~]$ ps -t 1,2,3
      PID TTY          TIME CMD
    19317 pts/1    00:00:00 bash
    19338 pts/1    00:00:00 man
    19349 pts/1    00:00:00 less
    19358 pts/2    00:00:00 bash
    19812 pts/3    00:00:00 bash
    19833 pts/3    00:00:00 ssh
    21012 pts/2    00:00:00 ps
    [view@tri ~]$ ps -t pts/0
      PID TTY          TIME CMD
    pts/0    00:00:00 bash
    pts/0    00:00:00 su
    pts/0    00:00:00 bash
    pts/0    00:00:11 java
    #显示没有终端信息的进程
    [view@tri ~]$ ps -t ?
    

     示例3.2.8:EUID,RUID

    [work@p2p-task ~]$ ps -C java -o euid,ruid
     EUID  RUID
        0     0
      500   500
    

    3.3.OUTPUT FORMAT CONTROL

    选项 说明 示例

    -c

       

    --context

       

    --format format

    o format

    -o format

     用户定义输出格式;format是一个由逗号分隔的列表参数。

     format中使用的关键字,参考“3.9”。标题行还可以根据需要重新命名。

     

    j

    -j

     作业格式  3.3.1

    l

    -ly

     长格式输出  3.3.2
    s    
    u    
    v    
    X    
    -y    
    Z    

    示例3.3.1:作业格式输出

    [view@file ~]$ ps -C nginx j
     PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND
        1 10517 10517 10517 ?           -1 Ss       0   0:00 nginx: master process /usr/sbin/nginx
    10517 10518 10517 10517 ?           -1 S     1004   5:10 nginx: worker process
    10517 10519 10517 10517 ?           -1 S     1004   5:08 nginx: worker process
    10517 10520 10517 10517 ?           -1 S     1004   5:10 nginx: worker process
    10517 10521 10517 10517 ?           -1 S     1004   5:14 nginx: worker process
    ……
    

    示例3.3.2:长格式输出

    [view@file ~]$ ps -C nginx l
    F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
    1     0 10517     1  20   0 122232  2180 sigsus Ss   ?          0:00 nginx: master process /usr/sbin/nginx
    5  1004 10518 10517  20   0 122692  3160 ep_pol S    ?          5:10 nginx: worker process
    5  1004 10519 10517  20   0 122692  3268 ep_pol S    ?          5:08 nginx: worker process
    5  1004 10520 10517  20   0 122692  3084 ep_pol S    ?          5:10 nginx: worker process
    5  1004 10521 10517  20   0 122692  3252 ep_pol S    ?          5:14 nginx: worker process
    ……
    
    [view@file ~]$ ps -C nginx -l
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    1 S     0 10517     1  0  80   0 - 30558 sigsus ?        00:00:00 nginx
    5 S  1004 10518 10517  0  80   0 - 30673 ep_pol ?        00:05:10 nginx
    5 S  1004 10519 10517  0  80   0 - 30673 ep_pol ?        00:05:08 nginx
    5 S  1004 10520 10517  0  80   0 - 30673 ep_pol ?        00:05:10 nginx
    5 S  1004 10521 10517  0  80   0 - 30673 ep_pol ?        00:05:14 nginx
    ……
    
    [view@file ~]$ ps -C nginx -ly
    S   UID   PID  PPID  C PRI  NI   RSS    SZ WCHAN  TTY          TIME CMD
    S     0 10517     1  0  80   0  2180 30558 sigsus ?        00:00:00 nginx
    S  1004 10518 10517  0  80   0  3160 30673 ep_pol ?        00:05:10 nginx
    S  1004 10519 10517  0  80   0  3268 30673 ep_pol ?        00:05:08 nginx
    S  1004 10520 10517  0  80   0  3084 30673 ep_pol ?        00:05:10 nginx
    S  1004 10521 10517  0  80   0  3252 30673 ep_pol ?        00:05:14 nginx
    ……
    

    3.4.OUTPUT MODIFIERS

    选项 说明 示例
     c  显示真实的命令名称  
    --cols n    
    --columns n    
    --cumulative    
    e    
    f    
    --forest    
    h    
    -H    
    --headers    

    K spec

    --sort spec

    指定排序顺序;

     spec参考“3.9”的关键字。

    3.4.1
    --lines n    
    -n namelist    
     --rows n

    设定屏幕高度

     
     S 信息汇总  

     w-w

     宽格式输出;ww不限制宽度 -
     --width n 设置屏幕宽度  

    示例3.4.1:-表示降序,+表示升序排序。

    [view@file ~]$ ps u
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    work      1489  0.0  0.0 115396  2040 pts/1    Ss   11:10   0:00 -bash
    work      1511  0.0  0.0  76108  4140 pts/1    S+   11:10   0:00 ssh msd
    work      1515  0.0  0.0 115396  2044 pts/2    Ss   11:12   0:00 -bash
    work      2055  0.0  0.0 139512  1624 pts/2    R+   11:58   0:00 ps u
    [view@file ~]$ ps u k -vsz
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    work      2056  0.0  0.0 139508  1596 pts/2    R+   11:58   0:00 ps u k -vsz
    work      1489  0.0  0.0 115396  2040 pts/1    Ss   11:10   0:00 -bash
    work      1515  0.0  0.0 115396  2044 pts/2    Ss   11:12   0:00 -bash
    work      1511  0.0  0.0  76108  4140 pts/1    S+   11:10   0:00 ssh msd
    [view@file ~]$ ps u k +vsz
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    work      1511  0.0  0.0  76108  4140 pts/1    S+   11:10   0:00 ssh msd
    work      1489  0.0  0.0 115396  2040 pts/1    Ss   11:10   0:00 -bash
    work      1515  0.0  0.0 115396  2044 pts/2    Ss   11:12   0:00 -bash
    work      2057  0.0  0.0 139508  1600 pts/2    R+   11:58   0:00 ps u k +vsz
    

    3.5.THREAD DISPLAY

    3.6.OTHER INFORMATION

    3.7.PROCESS FLAGS

    3.8.PROCESS STATE CODES

    VALUES STATE EXAMPLE
    D 不可中断的休眠(IO等待)  
    R 正在运行、或即将运行(已经进入运行队列)  3.8.1
    S 可中断的睡眠(等待完成某个事件)  3.8.1
    T 被作业控制信号停止  
    t 跟踪期间由调试器停止  
    X  死亡(不会被看见)  
    Z  停止(僵尸,没有被回收资源的终止进程)  
    < 高优先级  
    N 低优先级  
    L    
    s 是会话头  3.8.1
    l 是多线程的  3.8.2
    + 是前台进程组中的一个进程  3.8.1

     示例3.8.1:当前终端的进程状态。运行的正在执行的ps,会话头是当前的bash进程。能看到两个进程的会话头id一致。

    [view@msd ~]$ ps -o pid,uid,gid,sid,user,f,stat
      PID   UID   GID   SID USER     F STAT
     2810  1000  1000  2810 work     0 Ss
     2894  1000  1000  2810 work     0 R+
    

     示例3.8.2:依赖于JDK的进程ps时看到的是java进程,这是会显示“多线程的Sl”。

    [view@msd ~]$ ps -p 9485 -o stat=
    Sl
    

    3.9.STANDARD FORMAT SPECIFIERS

      这里介绍的关键字,是用来控制格式输出、或者重新排序。

      

    CODE HEADER DESCRIPTION EXAMPLE

    %cpu

    pcpu

    %CPU

    %CPU

     CPU时间,使用CPU的时间除以进程运行的时间比,以百分比数值表示。

     3.9.4

     3.9.10

    %mem

    pmem

    %MEM

    %MEM

     进程常驻内存大小与机器物理内存的比值,以百分比数值表示。  

    args

    cmd

    command

    COMMAND

    CMD

    COMMAND

     带上命令所有参数作为一个字符串整体输出。

     
    blocked BLOCKED    
    bsdstart START

     进程启动的时间。

    该时间小于24小时时,显示“15:12”;否则显示“Jan 15”。表示“当天的15点12分”,“当年的1月15日”启动。

     3.9.1

     3.9.9

    bsdtime TIME

     进程消耗的cpu时间,包括“用户空间”和“系统调用”(user + system)。

    显示如“253:14”,表示“占用cpu的时间是253分钟14秒”。

     3.9.2

     3.9.9

     3.9.10

    c C

     处理器使用率。整数值,表示进程生命周期的cpu使用率。(%cpu)

     3.9.3

     3.9.4

     3.9.10

    caught CAUGHT    
    cgroup CGROUP    

    class

    cls

    policy

     CLS

     CLS

     POL

       
    comm  COMMAND

     仅可执行文件名。

     
    cp  CP  

     3.9.4

     3.9.10

    cputime

    time

     TIME

     累计CPU时间。格式“[DD-]hh:mm:ss”,如“263-11:21:32”,表示“进程使用cpu的时间是263天11个小时21分钟32秒”。

     3.9.5
    drs  DRS    

    egid

    gid

     EGID

     GID

     进程的有效“组ID”

     3.9.6

    egroup

    group

     EGROUP

    GROUP

     有效的进程“组ID”(文本组ID)  3.9.7
    eip  EIP

     指令指针

     3.9.8
    esp  ESP

     堆栈指针

     3.9.8
    etime  ELAPSED

     进程启动后经过的时间,格式“[[DD-]hh:]mm:ss”。

    便于了解进程运行的时间长度。

     3.9.9
    etimes  ELAPSED

     进程启动后经过的时间,数字表示单位是秒。

    便于了解进程运行的时间长度。

     3.9.9

     3.9.10

    euiduid

     EUID

     UID

     有效的"用户ID"

     3.9.11

    euser

    uname

    user

     EUSER

     USER

     USER

     有效的用户名(某些限制,无法显示时,会显示UID)

     3.9.11
    lstart  STARTED

     进程启动的时间,信息更加精准易读。更加精准地了解进程启动的时间点。

     3.9.12

    lwp

    spid

    tid

     LWP

     SPID

     TID

     可调度实体的轻量级进程(线程)

     3.9.13
    maj_flt  MAJFLT  
    min_flt  MINFLT  

    ni

    nice

     NI

       

    nlwp

    thcount

     NLWP

     THCNT

     进程包含的线程数量

     3.9.14

    pgid

    pgrp

     PGID

     PGRP

     进程组ID  
    pid  PID

     一个代表进程ID的数字

     
    ppid  PPID

     父进程ID

     
    pri  PRI

     进程优先级;数值越大优先级越低。默认19

     
    psr  PSR

     该进程当前分配的处理器。

     
    rgid  RGID

     真实的组ID

     
    rgroup  RGROUP

     真实的组名

     

    rss

    rssize

    rsz

     RSS

     RSS

     RSZ

     常驻内存的大小(KiloBytes)。  3.9.15

    s

    state

     S

     S

     进程状态,只显示一个字母

     
    sched  SCH

     进程调度策略;策略 SCHED_OTHER(SCHED_NORMAL)、SCHED_FIFO、SCHED_RR、SCHED_BATCH、SCHED_ISO、SCHED_IDLE,分别显示成0,1,2,3,4,5,6。

     

    sess

    sid

    session

     SESS

     SID

     SESS

     会话ID  
    start  STARTED  类似bsdstart  3.9.12
    start_time  START    3.9.12
    stat  STAT  进程状态  
    sz  SZ

     进程占用内存的物理量,包括text(文本常驻集)、data、stack。

     

    tname

    tt

    tty

     TTY

    TT

    TT

     终端  
    tpgid  TPGID    
    trs  TRS

     文本常驻集大小(内存量)

     
    ucmd  CMD    
    ucomm  COMMAND    
    uname  USER    
    unit  UNIT    
    user  USER    
    userns  USERNS    
    utsns  UTSNS    
    uunit  UUNIT    

    vsize

    vsz

     VSZ  进程使用的虚拟内存大小,单位KiB(1024-bye units)。  

    示例3.9.1:进程的启动时间的表示

    [view@msd ~]$ ps -C java -o bsdstart
     START
    Sep 29
    Jan 15
    [view@oxomsdapp1 ~]$ ps -C java -o bsdstart
     START
     15:12
    

    关于时间,更进一步理解。进程的启动时间是“15:57”,当前时间是“15:28:09”,如果把启动时间理解成当时的时间,显然讲不过去。……可以看成“当前时间24小时以内的15:57分”,就是昨天下午启动的进程。

    [view@zcw ~]$ ps -C10012 -o pid,ppid,c,cp,%cpu,pcpu,%mem,pmem,bsdstart,bsdtime,cputime
      PID  PPID  C  CP %CPU %CPU %MEM %MEM  START   TIME     TIME
    10012     1  3  35  3.5  3.5 29.9 29.9  15:57  49:22 00:49:22
    [view@zcw ~]$
    [view@zcw ~]$ date
    Wed Jan 17 15:28:09 CST 2018
    

      示例3.9.2:进程消耗的cpu时间(user + system)

    [view@msd ~]$ ps -C java -o bsdstart,bsdtime,pid
     START   TIME   PID
    Sep 29 253:14  9485
    

     示例3.9.3:

    [view@msd ~]$ ps -C java -o pid,c,%cpu
      PID  C %CPU
     9485  0  0.1
    21931  0  0.1
    32316  0  0.0
    

     示例3.9.4:cpu使用率、……

    [view@app47 ~]$ ps -C java -o pid,c,%cpu,cp
      PID  C %CPU  CP
    24570  2  2.8  28
    

     示例3.9.5:进程的累计CPU时间

    [view@msd ~]$ ps -C java -o cputime
        TIME
    04:13:17
    00:01:36
    00:32:36
    

    示例3.9.6:有效组ID

    [view@msd ~]$ ps -C java -o egid,gid
     EGID   GID
     1000  1000
     1000  1000
     1000  1000
    

    示例3.9.7:

    [view@msd ~]$ ps -C java -o egroup,group
    EGROUP   GROUP
    work     work
    work     work
    work     work
    

     示例3.9.8:指令指针、堆栈指针

    [view@msd ~]$ ps -C java -o eip,esp
         EIP      ESP
    6d90def7 2ed1c310
    15cb9ef7 1e3a2e60
    3b3bfef7 3caeb470
    

    示例3.9.9:进程存活时间,便于计算运算了多久。

    [view@msd ~]$ ps -C java -o etime,etimes,bsdstart,bsdtime
        ELAPSED ELAPSED  START   TIME
    109-02:48:08 9427688 Sep 29 253:21
     1-02:04:32   93872 Jan 15   1:37
    25-23:52:58 2245978 Dec 21  32:37
    

     示例3.9.10:计算下进程的CPU使用率%cpu。(255*60+48=15348,15348/9509370=0.00160728,换算成百分比0.16%的cpu使用率。)

    [view@msd ~]$ ps -C java -o pid,etimes,bsdtime,%cpu,pcpu,c,cp
      PID ELAPSED   TIME %CPU %CPU  C  CP
     9485 9509370 255:48  0.1  0.1  0   1
    21931  175554   2:33  0.0  0.0  0   0
    32316 2327660  33:39  0.0  0.0  0   0
    

     示例3.9.11:进程的用户信息

    [view@msd ~]$ ps -C java -o pid,euid,uid,euser,uname,user
      PID  EUID   UID EUSER    USER     USER
     9485  1000  1000 work     work     work
    21931  1000  1000 work     work     work
    32316  1000  1000 work     work     work
    

     示例3.9.12:更加精准的进程启动时间,便于了解启动的时间点。

    [view@msd ~]$ ps -C java -o lstart=lstart,bsdstart=bsdstart,start=start,start_time=start_time,stime=stime
                      lstart bsdstart    start start_time stime
    Fri Sep 29 14:22:01 2017   Sep 29   Sep 29       2017  2017
    Mon Jan 15 15:05:37 2018   Jan 15   Jan 15      Jan15 Jan15
    Thu Dec 21 17:17:11 2017   Dec 21   Dec 21       2017  2017
    

     示例3.9.13:

    [view@msd ~]$ ps -e -o pid,lwp,comm
      PID   LWP COMMAND
        1     1 systemd
        2     2 kthreadd
        3     3 ksoftirqd/0
    ……
    

     示例3.9.14:进程包含的线程数量

    [work@msd ~]$ ps -e -o pid,comm,nlwp | grep -v "1$"
      PID COMMAND         NLWP
      461 rsyslogd           3
     9485 java              29
    21931 java              35
    24570 polkitd            6
    

     示例3.9.15:进程常驻内存量,通过常驻量计算内存使用占比。(进程9485,203908/3882328=0.05252209。……)

    [view@msd ~]$ ps -C java -o pid,rsz,rssize,rss
      PID   RSZ   RSS   RSS
     9485 204172 204172 204172
    21931 216516 216516 216516
    32316 584308 584308 584308
    [view@msd ~]$ ps -C java -o pid,sid,%mem,rsz
      PID   SID %MEM   RSZ
     9485  9131  5.2 203908
    21931 21484  5.5 216516
    32316 31772 15.0 584308
    [view@msd ~]$ free -k
                  total        used        free      shared  buff/cache   available
    Mem:        3882328     1258564     1797356        2656      826408     2391588
    Swap:             0           0           0
    

     

    3.10.ENVIRONMENT VARIABLES

    一切代码都是为了生活,一切生活都是调剂
  • 相关阅读:
    SQL SELECT INTO 语句
    跨站脚本攻击测试[转]
    Visual Studio 2008中如何比较二个数据库的架构【Schema】和数据【Data】并同步 [转贴]
    联表UPDATE
    网站架构策划方案
    概念模型 逻辑模型 物理模型 区别
    Repeater嵌套绑定Repeater
    .net 2.0升级到了.net 3.5,开发工具从vs2005转为vs2008
    你必须知道的C#的25个基础概念(附演示) 【转】
    window2003中,在IIS中,如何解决不能播放.FLV文件
  • 原文地址:https://www.cnblogs.com/argor/p/7919079.html
Copyright © 2020-2023  润新知