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