argor

   :: 首页  :: 新随笔  :: 联系 ::  :: 管理

 

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

 

posted on 2017-11-29 10:49  argor  阅读(723)  评论(0编辑  收藏  举报