ps 命令

用途

显示进程的状态。 本文档介绍标准AIX® ps命令和System V 版本的ps命令。

语法

X/Open 标准

ps [ -A ] [ -M ] [ -N ] [ -Z ] [ -a ] [ -d ] [ -e ] [ -f ] [ -k ] [ -l ] [ -F 格式] [ -o 格式 ] [ -c Clist ] [ -G 光泽 ] [ -g 光泽 ] [ -m ] [ -n NameList ] [ -p 多语种 ] [ -P ] [ -t 列表 ] [ -U 乌利斯特 ] [ -u 乌利斯特 ] [ -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 -ol-l suv 标志仅确定 为该进程提供了多少信息;它们不确定列出哪些进程。 lsuv 标志互斥。

使用 -o 标志时, ps 命令检查内存或调页区域并确定进程创建时的命令名和参数是什么。 如果 ps 命令不能找到该信息,存储在内核中的命令名显示在方括号中。

COLUMNS 环境变量 覆盖系统选定的水平屏幕大小。

接受参数列表 (-o-G -g-p-t -U-u 标志)的命令行标志的限制为 128 项。 例如,-u Ulist 标志能 指定不超过 128 个用户。

如果 "ps命令的输出不包括 "工作量分区WPAR")名称,但包括项目 ID("项目)、用户 ID("UID或 "用户")或组 ID("GID),而这些 ID 与当前运行环境下工作负载分区中运行的进程有关,则在这些 ID 前加上加号 (+) 以表示与 "工作量分区有关。 每个工作负载分区都包含自己定义的用户、组和项目 ID,这些 ID 可能不同于为全局环境定义的 ID。 可指定-@选项,以便在输出中包含工作负载分区名称。

注: 当应用程序释放内存时, ps 命令不会显示内存使用计数的减少。 从应用程序释放内存时,会将内存分配给每个进程的内存空闲列表。 ps 命令会对作为用于应用程序的已分配内存释放的内存记帐。

取决于 ps 命令使用的标志,列标题将显示在标准输出中显示的信息的上方。 这些标题是在以下列表中定义的,并且用于使这些标题显示的标志显示在括号之间:

ADDR
通常情况下,(-ll 标志)包含 进程栈的段号;如果为内核进程,那么为预处理数据区的地址。
BND
-o THREAD 标志)内核线程所限制于的处理器(如果有)的逻辑处理器编号。 对于一个进程来说,如果它的所有线程都仅限于同一个处理器,就会显示此字段。
C
-fl-l 标志)每次系统时钟周期和发现线程或进程需要运行时增加进程或线程的 CPU 利用率。 调度程序通过每秒将该值除以 2 一次来使其衰减。 对于sched_other策略,CPU 利用率用于确定进程调度优先级。 如果值较大,那么表示一个将耗用大量 CPU 资源的进程,该进程的优先级将更低;如果值较小,那么表示一个要执行大量 I/O 操作的进程,其优先级将更高。
CMD
-f-l l 标志)包含命令名。 在 -f 标志下,ps 命令尝试确定当前的命令名和参数,它们都可能会被进程异步更改。 然后显示这些内容。 如果此命令失败,那么会像未用方括号将 -f 选项括起来的情况下显示的命令名一样写入命令名。
命令
su v)包含命令名。 使用 -f 标志显示完整命令名和它的参数。
F 字段表
标志 十六进制值 定义
装载 0x00000001 表示该进程正在核心内存中操作。
SNOSWAP 0x00000002 表示该进程不能被交换出去。
STRC 0x00000008 表示该进程正被跟踪。
SWTED 0x00000010 表示进程在跟踪时停止。
SFWTED 0x00000020 表示在被跟踪时,调用 fork 子例程后进程停止。
缝制 0x00000040 表示在被跟踪时,调用 exec 子例程后进程停止。
SLWTED 0x00000080 表示在被跟踪时,调用 loadunload 子例程后进程停止。
SFIXPRI 0x00000100 表示该进程有固定的优先级,忽略 pcpu 字段描述符。
SKPROC 0x00000200 表示一个内核进程。
索马斯克 0x00000400 表示收到信号后恢复旧掩码。
SWAKEONSIG 0x00000800 表示该信号将异常终止 sleep 子例程。 内容必须PCATCH 标志的内容相同。 PCATCH SWAKEONSIG 的内容必须大于 PMASK 的内容。
苏塞 0x00001000 表示该进程处在用户方式中。
SLKDONE 0x00002000 表示该进程已完成锁定。
串联 0x00004000 表示该进程是个调试进程。
SMPTRACE 0x00008000 表示多进程调试。
0x00010000 表示正退出进程。
SSEL 0x00020000 表示处理器正在选择:唤醒/等待危险。
SORPHANPGRP 0x00040000 表示一个孤立进程组。
SNOCNTLPROC 0x00080000 表示会话导带放弃了终端控制。
SPPNOCLDSTOP 0x00100000 表示当子进程停止时,SIGHLD 信号送到父进程。
性爱 0x00200000 表示已运行该进程。
SJOBSESS 0x00400000 表示在当前会话中使用作业控制。
SJOBOFF 0x00800000 表示该进程不受作业控制的影响。
PSIGDELIVERY 0x01000000 表示该进程被程序检查处理程序使用。
SRMSHM 0x02000000 表示调用 exit 子例程过程中,该进程除去了共享内存。
免费 0x04000000 表示进程槽空闲。
SNOMSG 0x08000000 表示没有其他 uprintf 子例程消息。
WPAR
-@ 标志)包含工作负载分区名称。 在 -@ 标志下,ps 命令显示进程正在其中运行的工作负载分区的名称。 在wparname参数中指定-@标志,以显示进程信息。
DPGSZ
Z 标志)进程数据页的大小。
F
-ll 标志)下表中列示了与进程和线程相关联的一些更重要的 F 字段标志(十六进制和附加的):
F 字段表
标志 十六进制值 定义
装载 0x00000001 表示该进程正在核心内存中操作。
SNOSWAP 0x00000002 表示该进程不能被交换出去。
STRC 0x00000008 表示该进程正被跟踪。
SKPROC 0x00000200 表示一个内核进程。
0x00010000 表示正退出进程。
SLPDATA 0x00020000 表示该进程使用了大页面。
性爱 0x00200000 表示已运行该进程。
性教育 0x01000000 表示该进程正在执行(执行一个可执行程序)。
SPSEARLYALLOC 0x04000000 表示先前分配了此进程的调页空间。
TKTHREAD 0x00001000 表示该线程是一个内核线程。
注意:您可以查看/usr/include/sys/proc.h/usr/include/sys/thread.h文件中的p_flagst_flags字段,了解所有进程和线程标志的定义。
LIM
v 标志)通过调用 setrlimit 子例程指定的对于已使用内存的软限制。 如果未指定限值,则 xx显示。 如果限值设置为系统限值(无限制),值为UNLIM显示。
NI
(ll标记) nice值;用于计算sched other
PID
(所有标志)进程的进程标识。
PGIN
v 标志)处理未装入核心的页面引用产生的磁盘 I/O 的数目。
PPID
-fl -l 标志)父进程的进程标识。
PRI
-ll 标志)进程或内核线程的优先级;数字越大优先级越低。
PROJECT
-P 标志)分配到进程的项目名称。 在当前运行环境下,PROJECTUSER字段不会转换为工作负载分区内运行的进程名称。 除非特定工作负载分区名称中包含 -@ 标志,否则 -U-u 标志仅适用于当前操作环境。 如果使用 -@ 标志来指定当前操作环境之外的工作负载分区,并且指定了 -U-u 标志,那么列出的用户标识必须为数字。
RSS
v 标志)进程的实内存(驻留集)大小(以 1 KB 为单位)。
S
-ll 标志)进程或内核线程的状态:

对于进程:

O
不存在
A
活动
W
已交换
I
空闲(等待启动)
Z
已取消
T
已停止

对于内核线程:

O
不存在
R
正在运行
S
正在休眠
W
已交换
Z
已取消
T
已停止
SC
-o THREAD 标志)进程或内核线程的暂挂数。 对进程来说,暂挂数定义为内核线程暂挂数的总和。
SCH
-o THREAD, sched 标志)内核线程的调度策略。 政策sched_other,sched_fifosched_rr分别用0,1,2.只有指定了sched标志,才会显示调度策略。
大小
v 标志)进程的数据部分的虚拟大小(以 1 KB 为单位)。
SHMPGSZ
Z 标志)进程的共享内存页大小。
SPGSZ
Z 标志)进程栈页的大小。
SSIZ
s 标志)内核堆栈的大小。 对于多线程进程,该值总为 0(零)。
STAT
su v 标志)包含进程状态:
0
不存在
A
活动
I
中间的
Z
已取消
T
已停止
K
可用的内核进程
STIME
-fu 标志)进程的启动时间。 LANG 环境变量控制该字段的外观。
SUBPROJ
-P 标志)分配到进程的子项目标识。
SZ
-ll 标志)进程的核心映像大小(以 1 KB 为单位)。
THCNT
-o thcount 标志)进程拥有的内核线程数。
TID
-o THREAD 标志)内核线程的线程标识。
时间
(所有标志)进程的运行时间总和。 如果运行时间达到 100 分钟,以 mm:ssmmmm:ss 格式显示时间,这与使用 -o time 标志时的显示格式不同。
TPGSZ
Z 标志)进程文本页的大小。
TRS
v 标志)文本的驻留集(实际内存)大小。
TSIZ
v 标志)文本(共享程序)映像的大小。
TTY
(所有标志)进程的控制终端:
-
进程与终端无关。
?
未知。
编号
TTY 数目。 例如,条目2表示TTY2。
UID
-f-l l 标志)进程所有者的用户标识。 登录名在 -f 标志下显示。
用户
u 标志)进程所有者的登录名。 在当前运行环境下,PROJECTUSER字段不会转换为工作负载分区内运行的进程名称。
WCHAN
-l 标志)进程或内核线程为之等待或休眠的事件。 对于内核线程,如果内核线程正在运行,该字段为空。 对于进程,如果只有一个内核线程正在休眠,等待通道定义为该休眠内核线程的等待通道;否则显示一个星号。
WCHAN
l 标志)进程正在等待的事件(系统中的一个地址)。 除非请求的是数字输出,否则会选择一个将地址分类的符号。
CPU 百分比
uv 标志)进程启动后,该进程使用 CPU 的时间百分比。 此值的计算方法是:将进程使用 CPU 的时间除以该进程的耗用时间。 在多处理器环境中,因为同一进程中的几个线程可以同时在不同的 CPU 上运行,该值要进一步除以可用 CPU 数。 (由于计算该数据基于的时间不同,所有 %CPU 字段的总和可能超过 100%。)
%MEM
uv 标志)进程使用的实际内存的百分比。 %MEM值往往会夸大与其他进程共享程序文本的进程的成本。 但运行一个程序的多个副本和所有实例共享该程序文本的一个副本时不会计算时间。 在该程序的每个实例中计算文本节的大小。 这意味着,如果运行一个程序的多个副本,所有进程的 "%MEM总值可能超过 100%。
已退出的进程,如果其父进程尚未等待该进程,则会被标记为<defunct>.被阻止退出的进程会被标记为<exiting>. ps命令试图确定内存或交换区创建进程时给出的文件名和参数。
注意:
  1. ps 命令运行时可以更改进程。 为死进程显示的部分数据是不相关的。
  2. ps 程序将检查内存,以检索在创建该进程时所使用的文件名和参数。 但是,进程可以破坏信息,使检索文件名和参数的方法不可靠。
  3. ps 程序会在本地资源中搜索用户和组信息。

标志

下列标志前面有一个 -(负号):

描述
-A 将关于所有进程的信息写到标准输出。
-a 将关于所有进程(除了会话导带和与终端无关的进程)的信息写到标准输出。
-c Clist 仅显示有关 Clist 变量列出的指定到工作负荷管理类的进程的信息。 Clist 变量是一个由逗号分隔的类名列表,或者是一个用双引号(" ")引起来的类名列表,并且类名之间用逗号和/或一个或多个空格分隔。
-d 将关于所有进程(除会话导带)的信息写到标准输出。
-e 将除内核进程以外所有进程的信息写到标准输出。
-F 格式 -o Format 的功能相同。
-f 生成一个完整列表。
-G 光泽 仅将关于进程的信息写到标准输出,这些进程处于为 Glist 变量列出的有效组中。 Glist 变量是一个用逗号分隔的有效组标识的列表,或者是一个用双引号(" ")引起来、并且使用逗号或一个或多个空格分隔的有效组标识的列表。
-g 光泽 仅将关于进程的信息写到标准输出,这些进程在为 Glist 变量列出的进程组中。 Glist 变量是一个由逗号分隔的进程组标识列表,或者是一个用双引号(" ")引起来、并且各个进程组标识之间用逗号或一个或多个空格分隔的进程组标识的列表。
-k 列出内核进程。
-l 生成一长列表。 另见l标志。
-L pidlist pidlist 变量中生成每个 pid(已经将 pid 传递给它)后代的列表。 pidlist 变量是逗号分隔的进程标识的列表。 所给定的所有 pid 的后代列表将按它们在进程表中的显示顺序显示。
-M 列出所有 64 位的进程。
-M 列出内核线程和进程。 进程的输出行后面跟着一额外输出行,它关于每个内核线程。 This flag does not display thread-specific fields (bnd, 计数, 调度, thcount, and 小样), unless the appropriate -o 格式 flag is specified.
-N 不聚集线程统计信息。 使用该标志后,ps 报告那些 可以通过不遍历进程的线程链来获得那些统计信息。
-n NameList 指定备用系统名称列表文件来替换缺省系统名称列表文件。 因为直接提供信息给内核,操作系统不使用 -n 标志。
-o 格式 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 指定秒数。 该字段的缺省头为 ELAPSED

表示该进程的有效组标识。 显示文本组标识。 如果不能得到文本组标识,使用十进制表示。 此字段的缺省头是 GROUP
nice
表示进程细调值的十进制值。 此字段的缺省头是 NI
-o
pcpu
表示使用的 CPU 时间占可用 CPU 时间的比例,以百分比表示。 该字段的缺省头为 %CPU
pgid
表示进程组标识的十进制值。 该字段的缺省头为 PGID
pid
表示进程标识的十进制值。 此字段的缺省头是 PID
ppid
表示父进程标识的十进制值。 该字段的缺省头为 PPID
rgroup
表示该进程的实际组标识。 显示文本组标识。 如果不能得到文本组标识,使用十进制表示。 此字段的缺省头是 RGROUP
ruser
表示该进程的实际用户标识。 显示文本用户标识。 如果不能得到文本用户标识,使用十进制表示。 此字段的缺省头是 RUSER
计数
表示内核线程的暂挂数。 此字段的缺省头是 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 虚拟内存限制。 使用时,将显示新的标题 "VMSIZVMSIZ显示进程使用的虚拟内存。 此值以 1 MB 为单位显示。
thcount
表示该进程拥有的内核线程数。 此字段的缺省头是 THCNT
-o
线程
表示下列字段:
  • 用户名(uname字段)
  • 进程的进程 ID 和父进程 ID(pidppid字段)
  • 线程的内核线程 ID(tid字段)
  • 进程或内核线程的状态(S字段)
  • 进程或内核线程的 CPU 利用率(C字段)
  • 进程或内核线程的优先级(PRI字段)
  • 进程或内核线程的挂起计数(scount字段)
  • 进程或内核线程的等待通道(WCHAN字段)
  • 进程或内核线程的标志(F字段)
  • 进程的控制终端(tty字段)
  • 进程或内核线程绑定的 CPU(bnd字段)
  • 进程正在执行的命令(命令字段)。

除非还指定了 -m 标志,否则只是使用 -o THREAD 标志时并不会显示线程。

注: ps -o THREAD 标志不打印调度程序策略。 只有在指定了 sched 标志时,才会显示调度策略。
tid
表示内核线程的线程标识。 此字段的缺省头是 TID
时间
表示进程启动后的累计 CPU 时间。 时间以下列格式显示:

[ dd-] hh:毫米:ss

其中 dd 指定 天数,hh 指定小时数,mm 指定分钟数及 ss 指定秒数。 该字段的缺省头为 TIME

tty
表示该进程的控制终端名。 此字段的缺省头是 TT
用户
表示该进程的有效用户标识。 显示文本用户标识。 如果不能得到文本用户标识,使用十进制表示。 该字段的缺省头为 USER
vsz
使用十进制整数表示虚拟内存中进程的大小,以千字节为单位。 此字段的缺省头是 VSZ

否则,通过 Format 变量,可以显示指定格式的多个字段,包括字段描述符。 如果在 格式 变量中使用字段描述符,那么必须将其括在双引号 ("") 中。 下表显示了字段描述符如何对应于字段说明符:

 
Field           Field           Default 
Descriptors     Specifiers      Headers
%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=),那么字段的宽度至少为与缺省头文本等宽。 如果所有头字段都为空,不写头行。

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

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 变量是一个用逗号分隔的进程标识号列表,或者是一个用双引号(" ")引起来、并且各个进程标识号之间用逗号和/或一个或多个空格分隔的进程标识号列表。
-P 显示项目的项目名称、项目源和子项目标识。 如果为进程设置了防删除位,那么在项目名称前面将添加一个星号 (*) 字符。 Project origin字段指定当前加载的项目库(本地或 LDAP)。
-t 列表 仅显示与 Tlist 变量中列示的控制 tty 相关的进程的信息。 Tlist 变量是用逗号分隔的 tty 标识的列表,或者是一个用双引号(" ")引起来、并且各个 tty 标识之间用逗号和/或一个或多个空格分隔的 tty 标识列表。
-T pid 以使用 ASCII 技术的树格式显示位于给定 pid 上的进程层次结构。 此标志可以与 -f-F-o-l 标志一起使用。
-u 乌利斯特 该标志等同于-U Ulist标志。 除非还指定了 -@ 标志,否则 -u 标志仅适用于当前操作环境。 如果使用 -@ 标志来指定非当前操作环境下的工作负载分区且指定了 -u 标志,那么列出的用户标识必须为数字。
-U 乌利斯特 仅显示有关 Ulist 变量指定的用户标识号或登录名的进程的信息。 Ulist 变量或者是一个由逗号分隔的用户标识列表或者是一个由双引号(" ")引起来的且之间用逗号或一个或多个空格或两者分隔的用户标识列表。 除非还指定了 -@ 标志,否则 -u 标志仅适用于当前操作环境。 如果使用 -@ 标志来指定非当前操作环境下的工作负载分区且指定了 -u 标志,那么列出的用户标识必须为数字。 在列表中,ps命令会显示数字用户 ID,除非使用了-f标志;然后命令会显示登录名。 该标志等同于-u Ulist标志。 另请参见u标志。
-X 显示每个用户名/组名的所有可用字符,而不是截断为前 8 个字符。
-Z 显示进程的页大小设置。
DPGSZ
表示进程数据页的大小。
SHMPGSZ
表示进程分配的共享内存页大小。
SPGSZ
表示进程堆栈页的大小。
TPGSZ
表示进程文本页的大小。
-@ [ WparName ] 显示与 WparName 工作负载分区关联的进程信息。 如果没有指定 WparName 参数,将显示所有工作负载分区的进程信息。 显示所有进程的工作负载分区信息。 必须向 ps 命令指定其他标志,以确定要显示的进程信息。

选项

以下选项前没有减号(-):

描述
a 显示有关所有涉及到终端的进程的信息(通常仅显示用户自己的进程)。
c 显示命令名,它存储在系统内用于记帐,而不显示保留在进程地址空间中的命令参数。
e 显示环境以及传递给命令的参数,最多不超过 80 个字符。
EW e 标志中的显示内容换行到另外一行。
哎哟 e 标志中的显示内容换行并显示 ENV 列表,直至该标志达到 LINE_MAX 值。
恶心 e 标志中的显示内容换行并显示 ENV 列表,直至该标志达到 INT_MAX 值。
g 显示所有进程。
L 显示一个具有 FSUIDPIDPPIDCPRINIADDRSZPSSWCHANTTYTIMECMD 字段的长列表。
n 显示数字输出。 在长列表中,数字地而不是符号地显示 WCHAN 字段。 在用户列表中,USER 字段替换为 UID 字段。
显示尺寸 (SSIZ)的内核堆栈(供系统维护人员使用)的基本输出格式。 对于多线程进程,该值总为 0(零)。
t tty 显示控制 tty 为 "ps tty变量值的进程、0终端/dev/tty/0lft0/dev/lft0,以及pts/2 /dev/pts/2
u 显示面向用户的输出。 这包括 USERPID%CPU%MEMSZRSSTTYSTATSTIMETIMECOMMAND 字段。
v 显示 PGINSIZERSSLIMTSIZTRS%CPU%MEM 字段。
w 为输出指定一宽列格式(132 列而不是 80 列)。 如果重复,(例如: ww),使用任意宽的输出。 此信息用于决定要显示的长命令有多少。
X 显示没有终端的进程除了有一个控制终端的进程。
X 打印完整用户名或组名。 名称没有被截断。

退出状态

本命令返回以下退出值:

描述
重大安全事件数量 成功完成。
>0 发生错误。

安全性

RBAC 用户和 Trusted AIX 用户注意:该命令可执行特权操作。 只有特权用户才能执行特权限定的操作。 有关权限与特权的更多信息,请参阅安全性中的“特权限定的命令数据库”。 有关与该命令相关联的特权和权限的列表,请参阅 lssecattr 命令或 getcmdattr 子命令。

示例

  1. 要显示所有进程,请输入:
    ps -e -f
    要显示带有扩展用户名的所有进程,请输入:
    ps -X -e -f
  2. 要列出特定用户拥有的进程,请输入:
    ps -f -l -ujim,jane,su
  3. 要列出与 /dev/console/dev/tty1 ttys 相关的进程,请输入:
    ps -t console,tty/1
  4. 要列出与终端无关的进程,请输入:
    ps -t -
  5. 要使用字段描述符显示指定的格式,请输入:
    ps -o ruser,pid,ppid=parent,args
    输出为:
    RUSER   PID     parent  COMMAND
    helene  34      12      ps -o ruser,pid,ppid=parent,args
  6. 要使用字段描述符显示指定的格式,请输入:
    ps -o "< %u > %p %y : %a"
    输出为:
    < RUSER  >      PID     TT :    COMMAND
    < helene >      34      pts/3 : ps -o < %u > %p %y : %a
  7. 要显示有关由当前终端控制的进程和内核线程的信息,请输入:
    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  -    -   -           -     -  -
  8. 要显示有关所有进程和内核线程的信息,请输入:
    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     -   -  -
  9. 要列出所有 64 位的进程,请输入:
    ps -M
  10. 要显示进程的项目分配详细信息,请输入:
    ps -P
  11. 要显示进程的页大小设置,请输入:
    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

文件

描述
/我们/箱柜/ps 包含 ps 命令。

性能管理使用 ps 命令

System V ps 命令

语法 (System V)

/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]

描述 (System V)

ps 命令显示有关活动进程的信息。 不使用标志,ps 显示与控制终端相关的进程的信息。 输出包含进程标识、终端标识、累计运行时间和命令名。 随着标志的变化相应地显示信息。

output

取决于 ps 命令使用的标志,列标题随着显示的信息变化。 标题定义在下列列表中(使这些标题显示的标志在圆括号中显示):

F (-l)
与进程相关的标志(十六进制和添加的)或线程(如果指定了 -L 选项)。 与进程和线程相关的部分更重要 F 字段标志(十六进制和添加的)显示在下表中:
F 字段表
标志 十六进制值 定义
装载 0x00000001 表示该进程正在核心内存中操作。
SNOSWAP 0x00000002 表示该进程不能被交换出去。
STRC 0x00000008 表示该进程正被跟踪。
SKPROC 0x00000200 表示一个内核进程。
0x00010000 表示正退出进程。
性爱 0x00200000 表示已运行该进程。
性教育 0x01000000 表示该进程正在执行(执行一个可执行程序)。
TKTHREAD 0x00001000 表示该线程是一个仅内核线程。
注意:您可以分别参阅/usr/include/sys/proc.h/usr/include/sys/thread.h文件中的p_flagst_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:ssmmmm: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
时间
表示进程启动后的累计 CPU 时间。 时间显示的格式同 etime 中的格式。 该字段的缺省头为 TIME
tty
表示该进程的控制终端名。 此字段的缺省头是 TT
uid
使用一个十进制整数表示该进程的有效用户标识号。 此字段的缺省头是 UID
用户
表示该进程的有效用户标识。 显示文本用户标识。 如果不能得到文本用户标识,使用十进制表示。 该字段的缺省头为 USER
vsz
使用一个十进制整数表示该进程的核心映像,以千字节为单位。 此字段的缺省头是 VSZ
wchan
表示该进程或内核线程为之等待或休眠的事件。 对于内核线程,如果内核线程正在运行,该字段为空。 对于进程,如果只有一个内核线程正在休眠,等待通道定义为该休眠内核线程的等待通道;否则显示一个星号。

此字段的缺省头是 WCHAN

标志 (System V)

部分标志接受列表作为参数。 列表中的项或者可使用逗号分隔或者使用双引号引起来且之间用逗号或空格分隔。 proclistpgrplist 的值必须为数字。

描述
-a 将关于所有进程(除了会话导带和与终端无关的进程)的信息写到标准输出。
-A 将关于所有进程的信息写到标准输出。
-c 以反映调度程序属性的格式显示信息。 -c 标志影响 -f-l 标志的输出,描述如下。
-d 将关于所有进程(除会话导带)的信息写到标准输出。
-e 将除内核进程以外所有进程的信息写到标准输出。
-f 生成一个完整列表。
-g pgrplist 仅将关于在由 pgrplist 指定的进程组中的进程的信息写到标准输出。 pgrplist 的值必须为数字。
-G 网格表 仅将关于由 grplist 指定的进程组中的进程的信息写到标准输出。 -G 标志接受组名。
-j 显示会话标识和进程组标识。
-l 生成一长列表。
-L 显示进程中活动线程的状态。
-o 格式 format 变量指定的格式显示信息。 可以为 format 变量指定多个字段说明符。 可与-o标志一起使用的字段指定符在格式部分已有说明。
-p 预言家 仅显示有关 proclist 指定的进程号的进程的信息。 proclist 的值必须为数字。
-P 显示进程的主内核线程绑定到的处理器(如果有)的逻辑处理器号。
-s 侧列表 显示会话导带标识由 sidlist 指定的所有线程。
-t termlist 仅显示与 termlist 指定的终端相关的进程的信息。
-u uidlist 仅显示有关 uidlist 指定的用户标识号或登录名的进程的信息。
-U uidlist 仅显示有关 uidlist 指定的用户标识号或登录名的进程的信息。
-X 显示每个用户和组名称的所有可用字符,而不用截断前 8 个字符以后的字符。
-y 当与 -l 选项结合时,改变长列表以便它以千字节显示“RSS”和“SZ”且不显示“F”和“ADDR”字段。

退出状态 (System V)

本命令返回以下退出值:

描述
重大安全事件数量 成功完成。
>0 发生错误。

安全性 (System V)

RBAC 用户和 Trusted AIX 用户注意:该命令可执行特权操作。 只有特权用户才能执行特权限定的操作。 有关权限与特权的更多信息,请参阅安全性中的“特权限定的命令数据库”。 有关与该命令相关联的特权和权限的列表,请参阅 lssecattr 命令或 getcmdattr 子命令。

示例 (System V)

  1. 要显示所有进程,请输入:
    ps -e -f
  2. 要列出用户“guest”拥有的进程,请输入:
    ps -f -l -u guest 
  3. 要列出与 /dev/pts/0 /dev/pts/1 终端相关的进程,请输入:
    ps -t pts/0,pts/1
  4. 要列出与终端无关的进程,请输入:
    ps -t -
  5. 要使用字段说明符显示指定的格式,请输入:
    ps -o ruser,pid,ppid,args
  6. 要显示有关进程中所有内核线程的信息,请输入:
    ps -L
  7. 要显示所有进程的会话标识和进程组标识,请输入:
    ps -jA
  8. 要显示调度类和进程的优先级,请输入:
    ps -c -l 
  9. 要显示进程中内核线程的信息及内核线程数,请输入:
    ps -L -f 
  10. 要显示进程或内核线程绑定到的处理器,请输入:
    ps  -P
  11. 要显示给定进程(以下示例中的 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
  12. 要显示有关位于给定 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
  13. 要显示带有扩展用户名的所有进程,请输入:
    ps -X -e -f
  14. 要显示线程的调度策略,请输入以下命令:
    #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

文件 (System V)

描述
/usr/sysv/bin/ps 包含 System V R4 ps 命令。
/etc/passwd 包含用户标识信息。
/dev/pty* 指示终端 (PTY) 名称。
/dev/tty* 指示终端 (TTY) 名称。