ps 命令
用途
显示进程的状态。 本文件介绍标准 "AIX"ps和 "系统 V 版本的 "ps命令。
语法
- X/Open 标准
- 伯克利标准
描述
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 命令一起使用的标志,列标题显示在向标准输出显示的信息上方。 标题定义在以下列表中,导致显示这些标题的标志显示在括号中:
- 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 选项括起来的情况下显示的命令名一样写入命令名。
- 命令
- (s, u和 v) 包含命令名。 使用 -f 标志显示完整命令名和它的参数。F 字段表
标志 十六进制值 定义 SLOAD0x00000001 表示该进程正在核心内存中操作。 SNOSWAP0x00000002 表示该进程不能被交换出去。 STRC0x00000008 表示该进程正被跟踪。 SWTED0x00000010 表示进程在跟踪时停止。 SFWTED0x00000020 表示在被跟踪时,调用 fork子例程后进程停止。SEWTED0x00000040 表示在被跟踪时,调用 exec子例程后进程停止。SLWTED0x00000080 表示在被跟踪时,调用 load或unload子例程后进程停止。SFIXPRI0x00000100 表示该进程有固定的优先级,忽略 pcpu字段描述符。SKPROC0x00000200 表示一个内核进程。 SOMASK0x00000400 表示收到信号后恢复旧掩码。 SWAKEONSIG0x00000800 指示信号异常中止 sleep子例程。 内容必须不与PCATCH标志的内容相同。PCATCH和SWAKEONSIG的内容必须大于PMASK的内容。SUSER0x00001000 表示该进程处在用户方式中。 SLKDONE0x00002000 指示进程已锁定。 STRACING0x00004000 表示该进程是个调试进程。 SMPTRACE0x00008000 表示多进程调试。 SEXIT0x00010000 表示正退出进程。 SSEL0x00020000 指示处理器正在选择: 化妆或等待危险。 SORPHANPGRP0x00040000 表示一个孤立进程组。 SNOCNTLPROC0x00080000 表示会话导带放弃了终端控制。 SPPNOCLDSTOP0x00100000 表示当子进程停止时, SIGHLD信号 不送到父进程。SEXECED0x00200000 指示进程已执行。 SJOBSESS0x00400000 表示在当前会话中使用作业控制。 SJOBOFF0x00800000 表示该进程不受作业控制的影响。 PSIGDELIVERY0x01000000 表示该进程被程序检查处理程序使用。 SRMSHM0x02000000 表示调用 exit子例程过程中,该进程除去了共享内存。SSLOTFREE0x04000000 表示进程槽空闲。 SNOMSG0x08000000 表示没有其他 uprintf子例程消息。 - WPAR
- (-@ 标志)包含工作负载分区名称。 在 -@ 标志下,ps 命令显示进程正在其中运行的工作负载分区的名称。 使用 wparname 参数指定 -@ 标志以显示进程信息。
- DPGSZ
- (Z 标志)进程数据页的大小。
F- (-l 和 l 标志) 下表中列出了与进程和线程关联的一些更重要的
F字段标志 (十六进制和加法):F 字段表标志 十六进制值 定义 SLOAD0x00000001 表示该进程正在核心内存中操作。 SNOSWAP0x00000002 表示该进程不能被交换出去。 STRC0x00000008 表示该进程正被跟踪。 SKPROC0x00000200 表示一个内核进程。 SEXIT0x00010000 表示正退出进程。 SLPDATA0x00020000 表示该进程使用了大页面。 SEXECED0x00200000 指示进程已执行。 SEXECING0x01000000 表示该进程正在执行(执行一个可执行程序)。 SPSEARLYALLOC0x04000000 表示先前分配了此进程的调页空间。 TKTHREAD0x00001000 表示该线程是一个内核线程。 注: 您可以通过分别查阅 /usr/include/sys/proc.h 和 /usr/include/sys/thread.h 文件中的p_flags和t_flags字段来查看所有进程和线程标志的定义。
- LIM
- (v 标志)通过调用
setrlimit子例程指定的对于已使用内存的软限制。 如果尚未指定限制,那么将显示xx。 如果此限制设置为系统限制(即,无限制),那么将显示值UNLIM。 - NI
- (-l 和 l 标志) nice 值; 用于计算
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 标志)内核线程的线程标识。
- 时间
- (所有标志)进程的运行时间总和。 如果运行时间达到 100 分钟,以 mm:ss 或 mmmm:ss 格式显示时间,这与使用 -o time 标志时的显示格式不同。
- TPGSZ
- (Z 标志)进程文本页的大小。
- TRS
- (v 标志)文本的驻留集(实际内存)大小。
- TSIZ
- (v 标志)文本(共享程序)映像的大小。
TTY- (所有标志)进程的控制终端:
-- 进程与终端无关。
?- 未知。
- 编号
TTY号。 例如,条目2指示TTY2。
- UID
- (-f, -l和 l 标志) 进程所有者的用户标识。 登录名在 -f 标志下显示。
- 用户
- (u 标志)进程所有者的登录名。 在当前操作环境下,
PROJECT和USER字段不会转换为在 工作负载分区中运行的进程的名称。 - WCHAN
- (-l 标志)进程或内核线程为之等待或休眠的事件。 对于内核线程,如果内核线程正在运行,该字段为空。 对于进程,如果只有一个内核线程正在休眠,等待通道定义为该休眠内核线程的等待通道;否则显示一个星号。
- WCHAN
- (l 标志)进程正在等待的事件(系统中的一个地址)。 除非请求的是数字输出,否则会选择一个将地址分类的符号。
- CPU 百分比
- (u 和 v 标志)进程启动后,该进程使用 CPU 的时间百分比。 通过将进程使用 CPU 的时间除以进程的耗用时间来计算此值。 在多处理器环境中,因为同一进程中的几个线程可以同时在不同的 CPU 上运行,该值要进一步除以可用 CPU 数。 (由于计算该数据基于的时间不同,所有
%CPU字段的总和可能超过 100%。) - %MEM
- (u 和 v 标志) 此进程使用的实内存百分比。
%MEM值往往会夸大与其他流程共享程序文本的流程的成本。 但运行一个程序的多个副本和所有实例共享该程序文本的一个副本时不会计算时间。 在该程序的每个实例中计算文本节的大小。 这意味着如果运行程序的多个副本,那么所有进程的总%MEM值可能超过 100%。
<defunct>。 通过尝试退出而阻塞的进程被标记为 <exiting>。 ps 命令尝试确定内存或交换区域创建进程时提供的文件名和自变量。- 当 ps 命令运行时可以更改进程。 针对已失效的进程显示的某些数据不相关。
- ps 程序检查内存以检索创建进程时使用的文件名和自变量。 但是,进程可以破坏信息,使检索文件名和参数的方法不可靠。
- ps 程序会在本地资源中搜索用户和组信息。
标志
以下标志前面有 - (减号):
| 项 | 描述 |
|---|---|
| -A | 将关于所有进程的信息写到标准输出。 |
| -a | 将关于所有进程(除了会话导带和与终端无关的进程)的信息写到标准输出。 |
| -c Clist | 仅显示有关分配给 Clist 变量中列出的工作负载管理类的进程的信息。 Clist 变量是用逗号分隔的类名列表或用双引号 ("") 括起的类名列表,用逗号和/或一个或多个空格分隔。 |
| -d | 将关于所有进程(除会话导带)的信息写到标准输出。 |
| -e | 将除内核进程以外所有进程的信息写到标准输出。 |
| -F Format | 与 -o Format 的功能相同。 |
| -f | 生成一个完整列表。 |
| -G 光泽 | 仅将有关为 Glist 变量列出的有效组中的进程的信息写入标准输出。 Glist 变量是以逗号分隔的有效组标识列表,或者是用双引号 (" ") 括起并以逗号或一个或多个空格分隔的有效组标识列表。 |
| -g 光泽 | 仅将有关为 Glist 变量列出的进程组中的进程的信息写入标准输出。 Glist 变量是以逗号分隔的进程组标识列表或以双引号 (" ") 括起并以逗号或一个或多个空格分隔的进程组标识列表。 |
| -k | 列出内核进程。 |
| -l | 生成一长列表。 另请参阅 l 标志。 |
| -L pidlist | 生成在 pidlist 变量中传递给它的每个 pid 的后代列表。 pidlist 变量是逗号分隔的进程标识的列表。 所给定的所有 pid 的后代列表将按它们在进程表中的显示顺序显示。 |
| -M | 列出所有 64 位进程。 |
| -m | 列出内核线程和进程。 进程的输出行后跟每个内核线程的额外输出行。 除非指定了相应的 -o 格式 标志,否则此标志不会显示特定于线程的字段 (bnd, scount, sched, thcount和 tid)。 |
| -N | 不聚集线程统计信息。 使用该标志后,ps 报告那些 可以通过不遍历进程的线程链来获得那些统计信息。 |
| -n NameList | 指定备用系统名称列表文件来替换缺省系统名称列表文件。 因为直接提供信息给内核,操作系统不使用 -n 标志。 |
| -o Format | 以 Format 变量指定的格式显示信息。 可以为 Format 变量指定多个字段说明符。 Format 变量是用逗号分隔的字段说明符列表或包含在一组 "" 中的字段说明符列表。 (双引号) ,并以逗号或一个或多个空格或两者分隔。 每个字段说明符有一个缺省头。 通过附加一个 系统标识下列字段说明符:
|
| -o 续 |
|
| -o 续 |
否则,通过 Format 变量,可以显示指定格式的多个字段,包括字段描述符。 如果在 格式 变量中使用字段描述符,那么必须将其括在双引号 ("") 中。 下表显示了字段描述符如何对应于字段说明符: |
每个字段说明符有一个缺省头。 通过附加一个等号(=),后跟用户定义的头文本,可以覆盖缺省头。 这些字段按命令行上指定的顺序以列格式写入。 字段宽度由系统指定为至少与缺省或用户定义的头文本等宽。 如果头文本为空(例如,指定了 |
|
以下是缺省头和各种字段说明符之间的映射。 通过将等号 (=) 及紧随其后的用户定义的头文本附加到字段说明符中相应的条目,可以覆盖“缺省头”列中的每个条目。
|
|
| -p 多语种 | 仅显示具有为 Plist 变量指定的进程号的进程的相关信息。 Plist 变量是用逗号分隔的进程标识号列表或用双引号 ("") 括起的进程标识号列表 并以逗号或一个或多个空格或两者分隔。 |
| -P | 显示项目的项目名称、项目源和子项目标识。 如果为进程设置了防删除位,那么在项目名称前面将添加一个星号 (*) 字符。 Project origin 字段指定当前装入的项目存储库 (LOCAL 或 LDAP)。 |
| -t 列表 | 仅显示与 Tlist 变量中列出的控制 ttys 相关联的进程的相关信息。 Tlist 变量是用逗号分隔的 tty 标识列表或用双引号 ("") 括起的 tty 标识列表 并以逗号或一个或多个空格或两者分隔。 |
| -T pid | 通过使用 ASCII 艺术,以树格式显示以给定 pid 为根的进程层次结构。 此标志可以与 -f, -F, -o和 -l 标志一起使用。 |
| -u 乌利斯特 | 此标志等同于 -U Ulist 标志。 除非还指定了 -@ 标志,否则 -u 标志仅适用于当前操作环境。 如果使用 -@ 标志来指定非当前操作环境下的工作负载分区且指定了 -u 标志,那么列出的用户标识必须为数字。 |
| -U 乌利斯特 | 仅显示有关具有为 Ulist 变量指定的用户标识号或登录名的进程的信息。 Ulist 变量或者是一个由逗号分隔的用户标识列表或者是一个由双引号(" ")引起来的且之间用逗号或一个或多个空格或两者分隔的用户标识列表。 除非还指定了 -@ 标志,否则 -U 标志仅适用于当前操作环境。 如果 -@ 标志用于指定当前操作环境以外的工作负载分区,并且指定了 -U 标志,那么用户标识列表必须是数字。 在列表中,除非使用 -f 标志,否则 ps 命令将显示数字用户标识; 然后该命令将显示登录名。 此标志等同于 -u Ulist 标志。 另请参阅 u 标志。 |
| -X | 显示每个用户名/组名的所有可用字符,而不是截断为前 8 个字符。 |
| -Z | 显示进程的页大小设置。
|
| -@ [ 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 命令指定为打印; 即, 0 表示终端 /dev/tty/0, lft0 表示 /dev/lft0, pts/2 表示 /dev/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 | 发生错误。 |
安全性
Attention RBAC users: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关权限与特权的更多信息,请参阅安全性中的“特权限定的命令数据库”。 要获取与此命令相关联的特权和权限的列表,请参阅
lssecattr 命令或 getcmdattr 子命令。
示例
- 要显示所有进程,请输入:要显示具有扩展用户名的所有进程,请输入:
ps -e -fps -X -e -f - 要列出特定用户拥有的进程,请输入:
ps -f -l -ujim,jane,su - 要列出与
/dev/console和/dev/tty1ttys 类型关联的进程,请执行以下操作:ps -t console,tty/1 - 要列出与终端无关的进程,请输入:
ps -t - - 要使用字段描述符显示指定的格式,请输入:
输出为:ps -o ruser,pid,ppid=parent,argsRUSER 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 -lmF 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 THREADUSER 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 -ZPID 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 命令。 |
在 Performance management中使用 ps 命令。
System V ps 命令
语法 (System V)
描述 (System V)
ps 命令显示有关活动进程的信息。 如果没有标志, ps 将打印有关与控制终端关联的进程的信息。 输出包含进程标识、终端标识、累计运行时间和命令名。 随标志一起显示的信息会相应地有所不同。
- 输出
取决于 ps 命令使用的标志,列标题随着显示的信息变化。 标题定义在下列列表中(使这些标题显示的标志在圆括号中显示):
- F (-l)
- 与进程相关的标志(十六进制和添加的)或线程(如果指定了 -L 选项)。 下面显示了与进程和线程关联的一些更重要的
F字段标志 (十六进制和加性):F 字段表标志 十六进制值 定义 SLOAD0x00000001 表示该进程正在核心内存中操作。 SNOSWAP0x00000002 表示该进程不能被交换出去。 STRC0x00000008 表示该进程正被跟踪。 SKPROC0x00000200 表示一个内核进程。 SEXIT0x00010000 表示正退出进程。 SEXECED0x00200000 指示进程已执行。 SEXECING0x01000000 表示该进程正在执行(执行一个可执行程序)。 TKTHREAD0x00001000 表示该线程是一个仅内核线程。 注: 您可以通过分别引用/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策略优先级的进程的 nice 值。 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- 表示该进程的有效组标识。 显示文本组标识。 如果不能得到文本组标识,使用十进制表示。 该字段的缺省头为
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。
标志 (System V)
部分标志接受列表作为参数。 列表中的项可以用逗号分隔,也可以用双引号括起来并用逗号或空格分隔。 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 标志一起使用的字段说明符在上面的 格式 部分中进行了描述。 |
| -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字段。 |
退出状态 (System V)
本命令返回以下退出值:
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 成功完成。 |
| >0 | 发生错误。 |
安全性 (System V)
- 关注 RBAC 用户
- RBAC 用户注意: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关授权和权限的更多信息,请参阅安全中的特权命令数据库。 有关该命令的权限和授权列表,请参阅 "lssecattr命令或 "getcmdattr子命令。
示例 (System V)
- 要显示所有进程,请输入:
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 - 要打印给定进程的 ASCII 艺术 (在以下示例中为
inetd) ,请输入:
输出如下所示:ps -T 14220PID 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 14220UID 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
文件 (System V)
| 项 | 描述 |
|---|---|
| /usr/sysv/bin/ps | 包含 System V R4 ps 命令。 |
| /etc/passwd | 包含用户标识信息。 |
| /dev/pty* | 指示终端 (PTY) 名称。 |
| /dev/tty* | 指示终端 (TTY) 名称。 |