ps命令详解

linux 基础 专栏收录该内容
53 篇文章 0 订阅

用途
显示进程的状态。此文档描述标准的 AIX® ps 命令以及 System V 版本的 ps 命令。
语法
X/Open 标准
ps [ -A ] [ -M ] [ -N ] [ -Z ] [ -a ] [ -d ] [ -e ] [ -f ] [ -k ] [ -l ] [ -F format] [ -o Format ] [ -c Clist ] [ -G Glist ] [ -g Glist ] [ -m ] [ -n NameList ] [ -p Plist ] [ -P ] [ -t Tlist ] [ -U Ulist ] [ -u Ulist ] [ -T pid ] [ -L pidlist ] [ -X ] [ -@ [ WparName ] ]
Berkeley 标准
ps [ a ] [ c ] [ e ] [ ew ] [ eww ] [ ewww ] [ g ] [ n ] [ w ] [ x ] [ l | s | u | v ] [ t tty ] [ X ] [ ProcessNumber ]
描述
ps 命令将写入活动进程的状态;如果还指定了 -m 标志,那么还会在标准输出中显示相关联的内核线程。-m 标志将使用额外的行来显示与进程相关联的线程,您必须将 -o 标志与 THREAD 字段说明符配合使用来显示与线程相关的额外列。
不使用任何标志时,ps 命令会显示有关当前终端的信息。-f、-o、l、-l、s、u 和 v 标志仅确定 为该进程提供了多少信息;它们不确定列出哪些进程。l、s、u 和 v 标志互斥。
使用 -o 标志时,ps 命令检查内存或调页区域并确定进程创建时的命令名和参数是什么。 如果 ps 命令不能找到该信息,存储在内核中的命令名显示在方括号中。
COLUMNS 环境变量 覆盖系统选定的水平屏幕大小。
接受参数列表 (-o、-G、-g、-p、-t、-U 和 -u 标志)的命令行标志的限制为 128 项。例如,-u Ulist 标志能 指定不超过 128 个用户。
如果 ps 命令的输出中不包括工作负载分区 (WPAR) 名称,但是包括与正在当前操作环境下的某个工作负载分区中运行的进程相关联的项目标识 (PROJECT)、用户标识 (UID 或 USER) 或者组标识 (GID),那么会在这些标识前面添加一个加号 (+) 以指示与工作负载分区相关联。每个工作负载分区都包含它自己对用户标识、组标识和项目标识的定义,这些标识可能与为全局环境定义的标识不相同。可指定 -@ 选项以在输出中包含 工作负载分区 名称。
注:
ps 命令不会显示当应用程序释放内存时内存使用情况计数的降低。从应用程序释放内存时,会将内存分配给每个进程的内存空闲列表。ps 命令会对作为用于应用程序的已分配内存释放的内存记帐。
取决于 ps 命令使用的标志,列标题将显示在标准输出中显示的信息的上方。 这些标题是在以下列表中定义的,并且用于使这些标题显示的标志显示在括号之间:
ADDR
通常情况下,(-l 和 l 标志)包含 进程栈的段号;如果为内核进程,那么为预处理数据区的地址。
BND
(-o THREAD 标志)内核线程所限制于的处理器(如果有)的逻辑处理器编号。对于一个进程来说,如果它的所有线程都仅限于同一个处理器,就会显示此字段。
C
(-f、l 和 -l 标志)每次系统时钟周期和发现线程或进程需要运行时增加进程或线程的 CPU 利用率。调度程序通过每秒将该值除以 2 一次来使其衰减。对于 sched_other 策略,CPU 利用率用于确定进程调度优先级。如果值较大,那么表示一个将耗用大量 CPU 资源的进程,该进程的优先级将更低;如果值较小,那么表示一个要执行大量 I/O 操作的进程,其优先级将更高。
CMD
(-f、-l 和 l 标志)包含命令名。在 -f 标志下,ps 命令尝试确定当前的命令名和参数,它们都可能会被进程异步更改。然后显示这些内容。如果此命令失败,那么会像未用方括号将 -f 选项括起来的情况下显示的命令名一样写入命令名。
COMMAND
(s、u 和 v)包含命令名。使用 -f 标志显示完整命令名和它的参数。
F 字段表
标志 十六进制值 定义
SLOAD 0x00000001 表示该进程正在核心内存中操作。
SNOSWAP 0x00000002 表示该进程不能被交换出去。
STRC 0x00000008 表示该进程正被跟踪。
SWTED 0x00000010 表示进程在跟踪时停止。
SFWTED 0x00000020 表示在被跟踪时,调用 fork 子例程后进程停止。
SEWTED 0x00000040 表示在被跟踪时,调用 exec 子例程后进程停止。
SLWTED 0x00000080 表示在被跟踪时,调用 load 或 unload 子例程后进程停止。
SFIXPRI 0x00000100 表示该进程有固定的优先级,忽略 pcpu 字段描述符。
SKPROC 0x00000200 表示一个内核进程。
SOMASK 0x00000400 表示收到信号后恢复旧掩码。
SWAKEONSIG 0x00000800 表示该信号将异常终止 sleep 子例程。 内容必须不与 PCATCH 标志的内容相同。PCATCH 和 SWAKEONSIG 的内容必须大于 PMASK 的内容。
SUSER 0x00001000 表示该进程处在用户方式中。
SLKDONE 0x00002000 表示该进程已完成锁定。
STRACING 0x00004000 表示该进程是个调试进程。
SMPTRACE 0x00008000 表示多进程调试。
SEXIT 0x00010000 表示正退出进程。
SSEL 0x00020000 表示处理器正在选择:唤醒/等待危险。
SORPHANPGRP 0x00040000 表示一个孤立进程组。
SNOCNTLPROC 0x00080000 表示会话导带放弃了终端控制。
SPPNOCLDSTOP 0x00100000 表示当子进程停止时,SIGHLD 信号不送到父进程。
SEXECED 0x00200000 表示已运行该进程。
SJOBSESS 0x00400000 表示在当前会话中使用作业控制。
SJOBOFF 0x00800000 表示该进程不受作业控制的影响。
PSIGDELIVERY 0x01000000 表示该进程被程序检查处理程序使用。
SRMSHM 0x02000000 表示调用 exit 子例程过程中,该进程除去了共享内存。
SSLOTFREE 0x04000000 表示进程槽空闲。
SNOMSG 0x08000000 表示没有其他 uprintf 子例程消息。
WPAR
(-@ 标志)包含工作负载分区名称。 在 -@ 标志下,ps 命令显示进程正在其中运行的工作负载分区的名称。 使用 wparname 参数指定 -@ 标志以显示进程信息。
DPGSZ
(Z 标志)进程数据页的大小。
F
(-l 和 l 标志)下表中列示了与进程和线程相关联的一些更重要的 F 字段标志(十六进制和附加的):
F 字段表
标志 十六进制值 定义
SLOAD 0x00000001 表示该进程正在核心内存中操作。
SNOSWAP 0x00000002 表示该进程不能被交换出去。
STRC 0x00000008 表示该进程正被跟踪。
SKPROC 0x00000200 表示一个内核进程。
SEXIT 0x00010000 表示正退出进程。
SLPDATA 0x00020000 表示该进程使用了大页面。
SEXECED 0x00200000 表示已运行该进程。
SEXECING 0x01000000 表示该进程正在执行(执行一个可执行程序)。
SPSEARLYALLOC 0x04000000 表示先前分配了此进程的调页空间。
TKTHREAD 0x00001000 表示该线程是一个内核线程。
注:
可通过分别查询 /usr/include/sys/proc.h 和 /usr/include/sys/thread.h 文件中的 p_flags 和 t_flags 字段查看所有进程和线程标识的定义。
LIM
(v 标志)通过调用 setrlimit 子例程指定的对于已使用内存的软限制。如果尚未指定此限制,那么将显示 xx。如果此限制设置为系统限制(即,无限制),那么将显示值 UNLIM。
NI
(-l 和 l 标志)为 sched other 策略计算优先级中使用的细调值。
PID
(所有标志)进程的进程标识。
PGIN
(v 标志)处理未装入核心的页面引用产生的磁盘 I/O 的数目。
PPID
(-f、l 和 -l 标志)父进程的进程标识。
PRI
(-l 和 l 标志)进程或内核线程的优先级;数字越大优先级越低。
PROJECT
(-P 标志)分配到进程的项目名称。在当前操作环境下,PROJECT 和 USER 字段不会转换为正在工作负载分区中运行的进程的名称。除非特定工作负载分区名称中包含 -@ 标志,否则 -U 和 -u 标志仅适用于当前操作环境。如果使用 -@ 标志来指定当前操作环境之外的工作负载分区,并且指定了 -U 和 -u 标志,那么列出的用户标识必须为数字。
RSS
(v 标志)进程的实内存(驻留集)大小(以 1 KB 为单位)。
S
(-l 和 l 标志)进程或内核线程的状态:
对于进程:
O
不存在
A
活动
W
已交换
I
空闲(等待启动)
Z
已取消
T
已停止
对于内核线程:
O
不存在
R
正在运行
S
正在休眠
W
已交换
Z
已取消
T
已停止
SC
(-o THREAD 标志)进程或内核线程的暂挂数。 对进程来说,暂挂数定义为内核线程暂挂数的总和。
SCH
(-o THREAD, sched 标志)内核线程的调度策略。使用 0、1 和 2 分别显示策略 sched_other、sched_fifo 和 sched_rr。只有在指定了 sched 标志时,才会显示调度策略。
SIZE
(v 标志)进程的数据部分的虚拟大小(以 1 KB 为单位)。
SHMPGSZ
(Z 标志)进程的共享内存页大小。
SPGSZ
(Z 标志)进程栈页的大小。
SSIZ
(s 标志)内核堆栈的大小。对于多线程进程,该值总为 0(零)。
STAT
(s、u 和 v 标志)包含进程状态:
0
不存在
A
活动
I
中间的
Z
已取消
T
已停止
K
可用的内核进程
STIME
(-f 和 u 标志)进程的启动时间。 LANG 环境变量控制该字段的外观。
SUBPROJ
(-P 标志)分配到进程的子项目标识。
SZ
(-l 和 l 标志)进程的核心映像大小(以 1 KB 为单位)。
THCNT
(-o thcount 标志)进程拥有的内核线程数。
TID
(-o THREAD 标志)内核线程的线程标识。
TIME
(所有标志)进程的运行时间总和。如果运行时间达到 100 分钟,以 mm:ss 或 mmmm:ss 格式显示时间,这与使用 -o time 标志时的显示格式不同。
TPGSZ
(Z 标志)进程文本页的大小。
TRS
(v 标志)文本的驻留集(实际内存)大小。
TSIZ
(v 标志)文本(共享程序)映像的大小。
TTY
(所有标志)进程的控制终端:

进程与终端无关。
?
未知。
Number
TTY 数目。例如,条目 2 表示 TTY2。
UID
(-f、-l 和 l 标志)进程所有者的用户标识。登录名在 -f 标志下显示。
USER
(u 标志)进程所有者的登录名。在当前操作环境下,PROJECT 和 USER 字段不会转换为正在工作负载分区中运行的进程的名称。
WCHAN
(-l 标志)进程或内核线程为之等待或休眠的事件。 对于内核线程,如果内核线程正在运行,该字段为空。 对于进程,如果只有一个内核线程正在休眠,等待通道定义为该休眠内核线程的等待通道;否则显示一个星号。
WCHAN
(l 标志)进程正在等待的事件(系统中的一个地址)。除非请求的是数字输出,否则会选择一个将地址分类的符号。
%CPU
(u 和 v 标志)进程启动后,该进程使用 CPU 的时间百分比。此值的计算方法是:将进程使用 CPU 的时间除以该进程的耗用时间。在多处理器环境中,因为同一进程中的几个线程可以同时在不同的 CPU 上运行,该值要进一步除以可用 CPU 数。 (由于计算该数据基于的时间不同,所有 %CPU 字段的总和可能超过 100%。)
%MEM
(u 和 v 标志)进程使用的实际内存的百分比。%MEM 往往会增加与其他进程共享程序文本的进程的成本。但运行一个程序的多个副本和所有实例共享该程序文本的一个副本时不会计算时间。在该程序的每个实例中计算文本节的大小。这意味着如果运行一个程序的多个副本,所有进程的总 %MEM 值可以超过 100%。
如果进程已退出且其父代尚未等待该进程,那么该进程会标上 。如果进程遭阻塞,正在尝试退出,那么该进程会标上 。ps 命令试图确定内存或交换区创建进程时给定的文件名和参数。
注释:
当 ps 命令运行时可以更改进程。 为死进程显示的部分数据是不相关的。
ps 程序将检查内存,以检索在创建该进程时所使用的文件名和参数。但是,进程可以破坏信息,使检索文件名和参数的方法不可靠。
ps 程序会在本地资源中搜索用户和组信息。
标志
下列标志前面有一个 -(负号):
项目 描述
-A 将关于所有进程的信息写到标准输出。
-a 将关于所有进程(除了会话导带和与终端无关的进程)的信息写到标准输出。
-c Clist 仅显示有关 Clist 变量列出的指定到工作负荷管理类的进程的信息。Clist 变量是一个由逗号分隔的类名列表,或者是一个用双引号(" “)引起来的类名列表,并且类名之间用逗号和/或一个或多个空格分隔。
-d 将关于所有进程(除会话导带)的信息写到标准输出。
-e 将除内核进程以外所有进程的信息写到标准输出。
-F Format 与 -o Format 的功能相同。
-f 生成一个完整列表。
-G Glist 仅将关于进程的信息写到标准输出,这些进程处于为 Glist 变量列出的有效组中。Glist 变量是一个用逗号分隔的有效组标识的列表,或者是一个用双引号(” “)引起来、并且使用逗号或一个或多个空格分隔的有效组标识的列表。
-g Glist 仅将关于进程的信息写到标准输出,这些进程在为 Glist 变量列出的进程组中。Glist 变量是一个由逗号分隔的进程组标识列表,或者是一个用双引号(” “)引起来、并且各个进程组标识之间用逗号或一个或多个空格分隔的进程组标识的列表。
-k 列出内核进程。
-l 生成一长列表。另请参阅 l 标志。
-L pidlist 在 pidlist 变量中生成每个 pid(已经将 pid 传递给它)后代的列表。pidlist 变量是逗号分隔的进程标识的列表。所给定的所有 pid 的后代列表将按它们在进程表中的显示顺序显示。
-M 列出所有 64 位的进程。
-m 列出内核线程和进程。进程的输出行后面跟着一额外输出行,它关于每个内核线程。 该标志不显示特定于线程的字段(bnd、scount、sched、 thcount 和 tid),除非指定了适当的 -o Format 标志。
-N 不聚集线程统计信息。使用该标志后,ps 报告那些 可以通过不遍历进程的线程链来获得那些统计信息。
-n NameList 指定备用系统名称列表文件来替换缺省系统名称列表文件。 因为直接提供信息给内核,操作系统不使用 -n 标志。
-o Format 以 Format 变量指定的格式显示信息。可以为 Format 变量指定多个字段说明符。Format 变量 或者是一个由逗号分隔的字段说明符列表或是一个由“”(双引号)引起来的之间用逗号或一个或多个空格或两者分隔的说明符列表。
每个字段说明符有一个缺省头。通过附加一个 =(等号),后跟用户定义的头文本,可以覆盖缺省头。按照在命令行中指定的顺序采用列格式写入字段。字段宽度由系统指定为至少与缺省或用户定义的头文本等宽。如果头文本为空(例如,在指定了 -o user= 的情况下),那么字段宽度至少为缺省头文本宽度。如果所有头字段都为空,不写头行。
系统标识下列字段说明符:
args
说明正在执行的完整命令名。包含所有命令行参数,尽管可能发生截断。 该字段的缺省头为 COMMAND。
bnd
表示进程或内核线程绑定到哪个(如果有)处理器。 此字段的缺省头是 BND。
class
表示为进程或线程分配的工作负载管理类。此字段的缺省头是 CLASS。
comm
表示正在执行的命令的短名称。不包含命令行参数。 该字段的缺省头为 COMMAND。
cpu
确定进程调度优先级。每当处于系统时钟周期中并且发现进程或线程正在运行时,都会增大该进程或线程的 CPU 利用率。调度程序通过每秒将该值除以 2 一次来使其衰减。对于 sched_other 策略,大值表示一个 CPU 密集处理且造成更低的进程优先级而小值表示一个 I/O 密集处理且造成更高的优先级。
dpgsz
表示进程数据页的大小。
etime
表示进程启动后所用的时间。所用时间以下列格式显示:
[[ dd-]hh:]mm:ss
其中 dd 指定 天数,hh 指定小时数,mm 指定分钟数及 ss 指定秒数。该字段的缺省头为 ELAPSED。
group
表示该进程的有效组标识。显示文本组标识。如果不能得到文本组标识,使用十进制表示。 此字段的缺省头是 GROUP。
nice
表示进程细调值的十进制值。此字段的缺省头是 NI。
-o Continued
pcpu
表示使用的 CPU 时间占可用 CPU 时间的比例,以百分比表示。 该字段的缺省头为 %CPU。
pgid
表示进程组标识的十进制值。该字段的缺省头为 PGID。
pid
表示进程标识的十进制值。此字段的缺省头是 PID。
ppid
表示父进程标识的十进制值。该字段的缺省头为 PPID。
rgroup
表示该进程的实际组标识。显示文本组标识。如果不能得到文本组标识,使用十进制表示。 此字段的缺省头是 RGROUP。
ruser
表示该进程的实际用户标识。显示文本用户标识。 如果不能得到文本用户标识,使用十进制表示。 此字段的缺省头是 RUSER。
scount
表示内核线程的暂挂数。此字段的缺省头是 SC。
sched
表示内核线程的调度策略。此字段的缺省头是 SCH。
shmpgsz
表示进程的共享内存页大小。
spgsz
表示进程堆栈页的大小。
tag
表示工作负荷管理器应用程序标记。该字段的缺省头为 TAG。该标记为一个字符串,它不超过 30 个字符长且由 ps 显示时可能会截断。 对于不设置标记的进程,该字段显示为一个 -(连字符)。
tcpu
总 CPU 时间。指示单个进程的总累积 CPU 时间。该命令会显示 WLM 以主动方式或被动方式运行时的信息,而此字段会显示为 -(连字符)。此字段的缺省头是 TCPU。
tctime
总连接时间。指示登录会话可会活动时的时间总量。这仅在会话引导进程中才有意义。此字段的缺省头是 TCTIME。
tdiskio
总磁盘 I/O。指示单个进程的 I/O 的总累积块数。此字段的缺省头是 TDISKIO。
tpgsz
表示进程文本页的大小。
vmsize
表示 WLM 虚拟内存限制。使用此限制时,将显示一个新的标题 VMSIZ。VMSIZ 显示进程使用的虚拟内存。此值以 1 MB 为单位显示。
thcount
表示该进程拥有的内核线程数。此字段的缺省头是 THCNT。
-o Continued
THREAD
表示下列字段:
用户名(uname 字段)
进程的进程及父进程标识(pid 和 ppid 字段)
线程的内核线程标识(tid 字段)
进程或内核线程的状态(S 字段)
进程或内核线程的 CPU 利用率 (C 字段)
进程或内核线程的优先级(PRI 字段)
进程或内核线程的暂挂数(scount 字段)
进程或内核线程的等待通道( WCHAN 字段)
进程或内核线程的标志(F 字段)
进程的控制终端(tty 字段)
进程或内核线程绑定到的 CPU (bnd 字段)
正在由进程执行的命令(comm 字段)
除非还指定了 -m 标志,否则只是使用 -o THREAD 标志时并不会显示线程。
注:
ps -o THREAD 标志不会显示调度程序策略。只有在指定了 sched 标志时,才会显示调度策略。
tid
表示内核线程的线程标识。此字段的缺省头是 TID。
time
表示进程启动后的累计 CPU 时间。时间以下列格式显示:
[ dd-]hh:mm:ss
其中 dd 指定 天数,hh 指定小时数,mm 指定分钟数及 ss 指定秒数。该字段的缺省头为 TIME。
tty
表示该进程的控制终端名。此字段的缺省头是 TT。
user
表示该进程的有效用户标识。显示文本用户标识。 如果不能得到文本用户标识,使用十进制表示。 该字段的缺省头为 USER。
vsz
使用十进制整数表示虚拟内存中进程的大小,以千字节为单位。 此字段的缺省头是 VSZ。
否则,通过 Format 变量,可以显示指定格式的多个字段,包括字段描述符。 如果在 Format 变量中使用字段描述符,它必须包含在双引号(” ")内。 下表显示了字段描述符如何对应字段说明符:

字段 字段 缺省值
描述符 说明符 头
%a args COMMAND
%c comm COMMAND
%t etime ELAPSED
%D dpgsz DPGSZ
%G group GROUP
%n nice NI
%C pcpu %CPU
%r pgid PGID
%p pid PID
%P ppid PPID
%g rgroup RGROUP
%u ruser RUSER
%S spgsz SPGSZ
%x time TIME
%T tpgsz TPGSZ gd
%y tty TTY
%U user USER
%z vsz VSZ复制
每个字段说明符有一个缺省头。通过附加一个等号(=),后跟用户定义的头文本,可以覆盖缺省头。按照在命令行中指定的顺序采用列格式写入字段。字段宽度由系统指定为至少与缺省或用户定义的头文本等宽。如果头文本为空(例如,指定了 -o user=),那么字段的宽度至少为与缺省头文本等宽。如果所有头字段都为空,不写头行。

以下是缺省头和各种字段说明符之间的映射。通过将等号 (=) 及紧随其后的用户定义的头文本附加到字段说明符中相应的条目,可以覆盖“缺省头”列中的每个条目。
缺省头 字段说明符

ARGS “args”
COMM “comm”
COMM “command”
COMM “ucomm”
F_ETIME “etime”
GROUP “group”
GROUP “gname”
GID “gid”
NICE “nice”
PRI “pri”
NICE “ni”
PCPU “pcpu”
PMEM “pmem”
PGID “pgid”
PID “pid”
PPID “ppid”
RGROUP “rgroup”
RGROUP “rgname”
RGID “rgid”
RUSER “ruser”
RUSER “runame”
RUID “ruid”
TIME “time”
TIME “cputime”
TTY “tty”
TTY “tt”
TTY “tname”
TTY “longtname”
USER “user”
USER “uname”
UID “uid”
LOGNAME “logname”
STIME “start”
VSZ “vsz”
VSZ “vsize”
RSS “rssize”
FLAG “flag”
STATUS “status”
CP “cp”
PAGEIN “pagein”
WCHAN “wchan”
NWCHAN “nwchan”
ST “st”
TID “tid”
SCOUNT “scount”
BIND “bnd”
SCHED “sched”
THCOUNT “thcount”
TAG “tag”
CLASS “class”
TCPU “tcpu”
TDISKIO “tdiskio”
TCTIME “tctime”
MACLAB “mac"复制
-p Plist 仅显示有关 Plist 变量指定的进程号的进程的信息。Plist 变量是一个用逗号分隔的进程标识号列表,或者是一个用双引号(” “)引起来、并且各个进程标识号之间用逗号和/或一个或多个空格分隔的进程标识号列表。
-P 显示项目的项目名称、项目源和子项目标识。如果为进程设置了防删除位,那么在项目名称前面将添加一个星号 (*) 字符。Project origin 字段指定当前已装入的项目存储库(LOCAL 或 LDAP)。
-t Tlist 仅显示与 Tlist 变量中列示的控制 tty 相关的进程的信息。Tlist 变量是用逗号分隔的 tty 标识的列表,或者是一个用双引号(” “)引起来、并且各个 tty 标识之间用逗号和/或一个或多个空格分隔的 tty 标识列表。
-T pid 以使用 ASCII 技术的树格式显示位于给定 pid 上的进程层次结构。此标志可以与 -f、-F、-o 和 -l 标志一起使用。
-u Ulist 此标志相当于 -U Ulist 标志。 除非还指定了 -@ 标志,否则 -u 标志仅适用于当前操作环境。如果使用 -@ 标志来指定非当前操作环境下的工作负载分区且指定了 -u 标志,那么列出的用户标识必须为数字。
-U Ulist 仅显示有关 Ulist 变量指定的用户标识号或登录名的进程的信息。Ulist 变量或者是一个由逗号分隔的用户标识列表或者是一个由双引号(” ")引起来的且之间用逗号或一个或多个空格或两者分隔的用户标识列表。 除非还指定了 -@ 标志,否则 -U 标志仅适用于当前操作环境。如果使用 -@ 标志来指定非当前操作环境下的工作负载分区且指定了 -U 标志,那么列出的用户标识必须为数字。在该列表中,ps 命令显示数字用户标识除非使用 -f 标志;然后命令显示登录名。 此标志相当于 -u Ulist 标志。另请参阅 u 标志。
-X 显示每个用户名/组名的所有可用字符,而不是截断为前 8 个字符。
-Z 显示进程的页大小设置。
DPGSZ
表示进程数据页的大小。
SHMPGSZ
表示进程分配的共享内存页大小。
SPGSZ
表示进程堆栈页的大小。
TPGSZ
表示进程文本页的大小。
-@ [ WparName ] 显示与 WparName 工作负载分区关联的进程信息。如果没有指定 WparName 参数,将显示所有工作负载分区的进程信息。显示所有进程的工作负载分区信息。必须向 ps 命令指定其他标志,以确定要显示的进程信息。
选项
以下选项前没有减号(-):
项目 描述
a 显示有关所有涉及到终端的进程的信息(通常仅显示用户自己的进程)。
c 显示命令名,它存储在系统内用于记帐,而不显示保留在进程地址空间中的命令参数。
e 显示环境以及传递给命令的参数,最多不超过 80 个字符。
ew 将 e 标志中的显示内容换行到另外一行。
eww 将 e 标志中的显示内容换行并显示 ENV 列表,直至该标志达到 LINE_MAX 值。
ewww 将 e 标志中的显示内容换行并显示 ENV 列表,直至该标志达到 INT_MAX 值。
g 显示所有进程。
l 显示一个具有 F、S、UID、PID、PPID、C、PRI、NI、ADDR、SZ、PSS、WCHAN、TTY、TIME 和 CMD 字段的长列表。
n 显示数字输出。在长列表中,数字地而不是符号地显示 WCHAN 字段。在用户列表中,USER 字段替换为 UID 字段。
s 显示基本输出格式中每个进程(由系统维护人员使用)的内核栈的大小(SSIZ)。 对于多线程进程,该值总为 0(零)。
t tty 显示一些进程,这些进程的控制 tty 是 tty 变量的值,它们应该指定为 ps 命令显示的值;即,对于终端 /dev/tty/0 为 0,对于 /dev/lft0 为 lft0,对于 /dev/pts/2 为 pts/2。
u 显示面向用户的输出。这包括 USER、PID、%CPU、%MEM、SZ、RSS、TTY、STAT、STIME、TIME 和 COMMAND 字段。
v 显示 PGIN、SIZE、RSS、LIM、TSIZ、TRS、%CPU 和 %MEM 字段。
w 为输出指定一宽列格式(132 列而不是 80 列)。 如果重复,(例如, ww),任意地使用宽输出。 此信息用于决定要显示的长命令有多少。
x 显示没有终端的进程除了有一个控制终端的进程。
X 打印完整用户名或组名。名称没有被截断。
退出状态
此命令返回以下退出值:
项目 描述
0 成功完成。
0 发生错误。
安全性
RBAC 用户和可信 AIX 用户注意:此命令可以执行特权操作。只有特权用户才能运行特权操作。有关权限与特权的更多信息,请参阅安全性中的“特权命令数据库”。 有关与该命令相关联的特权和权限的列表,请参阅 lssecattr 命令或 getcmdattr 子命令。
示例
要显示所有进程,请输入:
ps -e -f复制
要显示带有扩展用户名的所有进程,请输入:
ps -X -e -f复制
要列出特定用户拥有的进程,请输入:
ps -f -l -ujim,jane,su复制
要列出与 /dev/console 和 /dev/tty1 ttys 相关的进程,请输入:
ps -t console,tty/1复制
要列出与终端无关的进程,请输入:
ps -t -复制
要使用字段描述符显示指定的格式,请输入:
ps -o ruser,pid,ppid=parent,args复制
输出为:
RUSER PID parent COMMAND
helene 34 12 ps -o ruser,pid,ppid=parent,args复制
要使用字段描述符显示指定的格式,请输入:
ps -o "< %u > %p %y : %a"复制
输出为:
< RUSER > PID TT : COMMAND
< helene > 34 pts/3 : ps -o < %u > %p %y : %a复制
要显示有关由当前终端控制的进程和内核线程的信息,请输入:
ps -lm复制
输出类似于以下内容:
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
240003 A 26 8984 7190 1 60 20 2974 312 pts/1 0:00 -ksh
400 S - - - 1 60 - - - - - -
200005 A 26 9256 8984 15 67 20 18ed 164 pts/1 0:00 ps
0 R - - - 15 67 - - - - - -复制
要显示有关所有进程和内核线程的信息,请输入:
ps -emo THREAD复制
输出类似于以下内容:
USER PID PPID TID S C PRI SC WCHAN FLAG TTY BND CMD
jane 1716 19292 - A 10 60 1 * 260801 pts/7 - biod
- - - 4863 S 0 60 0 599e9d8 8400 - - -
- - - 5537 R 10 60 1 5999e18 2420 - 3 -
luke 19292 18524 - A 0 60 0 586ad84 200001 pts/7 - -ksh
- - - 7617 S 0 60 0 586ad84 400 - - -
luke 25864 31168 - A 11 65 0 - 200001 pts/7 - -
- - - 8993 R 11 65 0 - 0 - - -复制
要列出所有 64 位的进程,请输入:
ps -M复制
要显示进程的项目分配详细信息,请输入:
ps -P复制
要显示进程的页大小设置,请输入:
ps -Z复制
输出类似于以下内容:
PID TTY TIME DPGSZ SPGSZ TPGSZ SHMPGSZ CMD
41856 pts/15 0:00 4K 4K 4K 64K ps
84516 pts/15 0:00 4K 4K 4K 64K ksh复制
文件
项目 描述
/usr/bin/ps 包含 ps 命令。
kill 命令和 nice 命令。
Performance management 中的『使用 ps 命令』。
System V ps 命令
语法
/usr/sysv/bin/ps [ -a ] [ -A ] [ -c ] [ -d ] [ -e ] [ -f ] [ -j ] [ -l ] [ -L ] [ -P ] [ -y ] [ -g pgrplist ] [ -o format ] [ -p proclist ] [ -s sidlist ] [ -t termlist ] [ { -u | -U } uidlist ] [ -G grplist ] [ -X ]
描述
ps 命令显示有关活动进程的信息。不使用标志,ps 显示与控制终端相关的进程的信息。输出包含进程标识、终端标识、累计运行时间和命令名。 随着标志的变化相应地显示信息。
输出
取决于 ps 命令使用的标志,列标题随着显示的信息变化。标题定义在下列列表中(使这些标题显示的标志在圆括号中显示):
F (-l)
与进程相关的标志(十六进制和添加的)或线程(如果指定了 -L 选项)。 与进程和线程相关的部分更重要 F 字段标志(十六进制和添加的)显示在下表中:
F 字段表
标志 十六进制值 定义
SLOAD 0x00000001 表示该进程正在核心内存中操作。
SNOSWAP 0x00000002 表示该进程不能被交换出去。
STRC 0x00000008 表示该进程正被跟踪。
SKPROC 0x00000200 表示一个内核进程。
SEXIT 0x00010000 表示正退出进程。
SEXECED 0x00200000 表示已运行该进程。
SEXECING 0x01000000 表示该进程正在执行(执行一个可执行程序)。
TKTHREAD 0x00001000 表示该线程是一个仅内核线程。
注:
通过分别在 /usr/include/sys/proc.h 和 /usr/include/sys/thread.h 文件中查询 p_flags 和 t_flags 字段,能看到所有进程和线程的定义。
S (-l)
进程或内核线程的状态:
对于进程:
O
不存在
A
活动
W
已交换
I
空闲
Z
已取消
T
已停止
对于内核线程:
O
不存在
R
正在运行
S
正在休眠
W
已交换
Z
已取消
T
已停止
UID (-f,- l)
进程的用户标识号(登录名在 -f 选项下显示)。
PID (all)
进程的进程标识。
PPID (-f,-l)
父进程的进程标识。
CLS (-c)
进程的调度类。仅在使用 -c 标志时显示。
NI (-l)
为 sched_other 策略计算优先级中使用的进程细调值。
PRI (-c, -l)
进程或内核线程的优先级。数字越大,优先级越低。
ADDR (-l)
通常情况下,包含进程栈的段号;如果为内核进程,那么为预处理数据区的地址。
SZ (-l)
进程的核心映像的页面大小。
WCHAN(-l)
进程或内核线程为之等待或休眠的事件。 对于内核线程,如果内核线程正在运行,该字段为空。 对于进程,如果只有一个内核线程正在休眠,等待通道定义为该休眠内核线程的等待通道;否则显示一个星号。
STIME (-f,-u)
进程的启动时间。LANG 环境变量控制该字段的外观。
TTY (all)
进程的控制终端:

进程与终端无关。
?
未知
TIME (all)
进程的总运行时间。如果运行时间达到 100 分钟,以 mm:ss 或 mmmm:ss 格式显示时间,这与使用 -o time 标志时的显示格式不同。
LTIME (-L)
单个 LWP 的运行时间。
CMD (all)
包含命令名。使用 -f 标志显示完整命令名和它的参数。
LWP (-L)
内核线程的 tid。
NLWP(-Lf)
进程中核心线程的数目。
PSR (-P)
绑定内核线程的处理器(如果有)的逻辑处理器号。 对一个进程来说,如果它的线程全都绑定到同一处理器上,那么显示该字段。
RSS (-ly)
该进程的实际内存(驻留集)大小(单位是 1 KB)。
格式
下表描述了系统标识的字段描述符。 可以连同 -o 标志使用这些字段描述符来指定 ps 命令的输出格式。
系统标识的字段描述符为:
addr
通常情况下,表示进程栈的段号;如果为内核进程,那么为预处理数据区的地址。 该字段的缺省头为 ADDR。
args
说明正在执行的完整命令名。包含所有命令行参数,尽管可能发生截断。 该字段的缺省头为 COMMAND。
c
每次系统时钟周期和发现进程或线程运行时增加进程或线程的 CPU 利用率。 调度程序通过每秒将该值除以 2 一次来使其衰减。对于 sched_other 策略,CPU 利用率用于确定进程调度优先级。大值表示一个 CPU 密集处理且造成更低的进程优先级而小值表示一个 I/O 密集处理且造成更高的优先级。 此字段的缺省头是 C。
class
表示内核线程的调度策略。策略为 sched_other、sched_fifo 和 sched_rr。此字段的缺省头是 CLS。
comm
表示正在执行的命令的短名称。不包含命令行参数。 该字段的缺省头为 COMMAND。
etime
表示进程启动后所用的时间。所用时间以该格式显示:
[[ dd -] hh: ]mm :ss复制
其中 dd 指定 天数,hh 指定小时数,mm 指定分钟数及 ss 指定秒数。
该字段的缺省头为 ELAPSED。
f
与进程相关的标志(十六进制和添加的)。 该字段的缺省头为 COMMAND。
fname
表示进程的可执行文件的基础名的前 8 个字节。 该字段的缺省头为 COMMAND。
gid
使用一个十进制整数表示该进程的有效组标识号。此字段的缺省头是 GID。在 -f 选项下打印登录名。

表示该进程的有效组标识。显示文本组标识。如果不能得到文本组标识,使用十进制表示。 此字段的缺省头是 GROUP。
lwp
表示该内核线程的线程标识。此字段的缺省头是 TID。
nice
表示进程细调值的十进制值。此字段的缺省头是 NI。
nlwp
表示该进程拥有的内核线程数。此字段的缺省头是 THCNT。
pcpu
表示使用的 CPU 时间占可用 CPU 时间的比例,以百分比表示。 该字段的缺省头为 %CPU。
pgid
表示进程组标识的十进制值。该字段的缺省头为 PGID。
pid
表示进程标识的十进制值。此字段的缺省头是 PID。
pmem
表示进程使用的实际内存的百分比。此字段的缺省头是 %MEM。
ppid
表示父进程标识的十进制值。该字段的缺省头为 PPID。
pri
表示进程或内核线程的优先级;数字越大优先级越低。 此字段的缺省头是 PRI。
psr
表示绑定内核线程的处理器(如果有)的逻辑处理器号。 此字段的缺省头是 PSR。
rgid
使用一个十进制整数表示该进程的实际组标识号。此字段的缺省头是 RGID。
rgroup
表示该进程的实际组标识。显示文本组标识。如果不能得到文本组标识,使用十进制表示。 此字段的缺省头是 RGROUP。
rss
表示该进程的实际内存(驻留集)大小(单位是 1 KB)。 该字段的缺省头为 RSS。
ruid
使用一个十进制整数表示该进程的实际用户标识号。此字段的缺省头是 RUID。
ruser
表示该进程的实际用户标识。显示文本用户标识。 如果不能得到文本用户标识,使用十进制表示。 此字段的缺省头是 RUSER。
s
表示该进程的状态。此字段的缺省头是 S。
sid
表示会话导带的进程标识。此字段的缺省头是 SID。
stime
表示进程的启动时间。LANG 环境变量控制该字段的外观。 此字段的缺省头是 STIME。
time
表示进程启动后的累计 CPU 时间。时间显示的格式同 etime 中的格式。该字段的缺省头为 TIME。
tty
表示该进程的控制终端名。此字段的缺省头是 TT。
uid
使用一个十进制整数表示该进程的有效用户标识号。此字段的缺省头是 UID。
user
表示该进程的有效用户标识。显示文本用户标识。 如果不能得到文本用户标识,使用十进制表示。 该字段的缺省头为 USER。
vsz
使用一个十进制整数表示该进程的核心映像,以千字节为单位。 此字段的缺省头是 VSZ。
wchan
表示该进程或内核线程为之等待或休眠的事件。 对于内核线程,如果内核线程正在运行,该字段为空。 对于进程,如果只有一个内核线程正在休眠,等待通道定义为该休眠内核线程的等待通道;否则显示一个星号。
此字段的缺省头是 WCHAN。
标志
部分标志接受列表作为参数。列表中的项或者可使用逗号分隔或者使用双引号引起来且之间用逗号或空格分隔。 proclist 和 pgrplist 的值必须为数字。
项目 描述
-a 将关于所有进程(除了会话导带和与终端无关的进程)的信息写到标准输出。
-A 将关于所有进程的信息写到标准输出。
-c 以反映调度程序属性的格式显示信息。-c 标志影响 -f 和 -l 标志的输出,描述如下。
-d 将关于所有进程(除会话导带)的信息写到标准输出。
-e 将除内核进程以外所有进程的信息写到标准输出。
-f 生成一个完整列表。
-g pgrplist 仅将关于在由 pgrplist 指定的进程组中的进程的信息写到标准输出。pgrplist 的值必须为数字。
-G grplist 仅将关于由 grplist 指定的进程组中的进程的信息写到标准输出。-G 标志接受组名。
-j 显示会话标识和进程组标识。
-l 生成一长列表。
-L 显示进程中活动线程的状态。
-o format 以 format 变量指定的格式显示信息。可以为 format 变量指定多个字段说明符。 可以连同 -o 标志一起使用的字段说明符的描述在 Format 节的上面。
-p proclist 仅显示有关 proclist 指定的进程号的进程的信息。proclist 的值必须为数字。
-P 显示进程的主内核线程绑定到的处理器(如果有)的逻辑处理器号。
-s sidlist 显示会话导带标识由 sidlist 指定的所有线程。
-t termlist 仅显示与 termlist 指定的终端相关的进程的信息。
-u uidlist 仅显示有关 uidlist 指定的用户标识号或登录名的进程的信息。
-U uidlist 仅显示有关 uidlist 指定的用户标识号或登录名的进程的信息。
-X 显示每个用户和组名称的所有可用字符,而不用截断前 8 个字符以后的字符。
-y 当与 -l 选项结合时,改变长列表以便它以千字节显示“RSS”和“SZ”且不显示“F”和“ADDR”字段。
退出状态
此命令返回以下退出值:
项目 描述
0 成功完成。

0 发生错误。
安全性
RBAC 用户和可信 AIX 用户注意:此命令可以执行特权操作。只有特权用户才能运行特权操作。有关权限与特权的更多信息,请参阅安全性中的“特权命令数据库”。 有关与该命令相关联的特权和权限的列表,请参阅 lssecattr 命令或 getcmdattr 子命令。
示例
要显示所有进程,请输入:
ps -e -f复制
要列出用户“guest”拥有的进程,请输入:
ps -f -l -u guest 复制
要列出与 /dev/pts/0 和 /dev/pts/1 终端相关的进程,请输入:
ps -t pts/0,pts/1复制
要列出与终端无关的进程,请输入:
ps -t -复制
要使用字段说明符显示指定的格式,请输入:
ps -o ruser,pid,ppid,args复制
要显示有关进程中所有内核线程的信息,请输入:
ps -L复制
要显示所有进程的会话标识和进程组标识,请输入:
ps -jA复制
要显示调度类和进程的优先级,请输入:
ps -c -l 复制
要显示进程中内核线程的信息及内核线程数,请输入:
ps -L -f 复制
要显示进程或内核线程绑定到的处理器,请输入:
ps -P复制
要显示给定进程(以下示例中的 inetd)的 ASCII 技术,请输入:
ps -T 14220复制
输出将类似于以下内容:
PID TTY TIME CMD
14220 - 0:00 inetd
16948 - 0:00 |–telnetd
32542 pts/4 0:00 | --ksh
26504 - 0:00 |–telnetd
41272 pts/5 0:00 | --ksh
26908 pts/5 0:00 | --vi
28602 - 0:00 |–telnetd
24830 pts/0 0:00 | --ksh
676416 pts/0 0:00 | --ksh
29984 - 0:00 |–telnetd
38546 pts/6 0:00 | --ksh
32126 - 0:00 |–telnetd
11162 pts/7 0:00 | --ksh
34466 - 0:00 |–rpc.ttdbserver
35750 - 0:00 |–telnetd
23612 pts/3 0:00 | --ksh
36294 - 0:00 |–telnetd
38096 pts/8 0:00 | --ksh
39740 - 0:00 |–telnetd
42226 pts/9 0:01 | --ksh
40632 - 0:00 |–telnetd
40232 pts/2 0:00 | --ksh
32910 pts/2 0:00 | --dbx
987990 pts/2 0:00 | --a.out
40722 - 0:00 |–telnetd
16792 pts/10 0:00 | --ksh
37886 pts/10 0:00 | --ps
105716 - 0:00 --telnetd
29508 pts/1 0:00 --ksh
39478 pts/1 0:00 --ksh
38392 pts/1 0:00 --vi复制
要显示有关位于给定 pid 的所有进程的信息,请输入:
ps -fL 14220复制
输出将类似于以下内容:
UID PID PPID C STIME TTY TIME CMD
root 14220 8676 0 Apr 07 - 0:00 /usr/sbin/inetd
root 16948 14220 0 Apr 06 - 0:00 telnetd -a
root 23612 35750 0 Apr 10 pts/3 0:00 -ksh
root 24830 28602 1 18:30:56 pts/0 0:00 -ksh
root 28602 14220 0 18:30:55 - 0:00 telnetd -a
root 32542 16948 0 Apr 06 pts/4 0:00 -ksh
root 34466 14220 0 Apr 10 - 0:00 rpc.ttdbserver 100083 1
root 35750 14220 0 Apr 10 - 0:00 telnetd -a
root 40228 24830 8 18:36:01 pts/0 0:00 ps -fL 14220复制
要显示带有扩展用户名的所有进程,请输入:
ps -X -e -f复制
要显示线程的调度策略,请输入以下命令:
#ps -m -o THREAD,sched
USER PID PPID TID ST CP PRI SC WCHAN F TT BND COMMAND SCH
suresana 1609830 4227284 - A 16 68 1 - 200001 pts/144 - ps -m
-o THREAD sched 0
- - - 6381739 R 16 68 1 -400000 - - - 0
suresana 4227284 4239476 - A 1 60 1 -200801 pts/144 - bash 0
- - - 4177981 S 1 60 1 -410400 - - - 0
suresana 4239476 921694 - A 0 60 1 -240001 pts/144 - -ksh 0
- - - 5554385 S 0 60 1 -10400 - - - 0复制
文件
项目 描述
/usr/sysv/bin/ps 包含 System V R4 ps 命令。
/etc/passwd 包含用户标识信息。
/dev/pty* 指示终端 (PTY) 名称。
/dev/tty* 指示终端 (TTY) 名称。
父主题:
p
相关参考:
nice 命令
相关信息:
kill 命令
使用 ps 命令

  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值