手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

ps(1)

名称

ps - 报告进程状态

用法概要

ps [-aAcdefjHlLPyZ] [-g grplist] [-h lgrplist] 
     [-n namelist] [-o format]... [-p proclist] 
     [-s sidlist] [-t term] [-u uidlist] [-U uidlist] 
     [-G gidlist] [-z zonelist]

描述

ps 命令会输出活动进程的相关信息。如果不使用任何选项,ps 会输出与调用程序具有相同有效用户 ID 和相同控制终端的进程的相关信息。输出仅包含进程 ID、终端标识符、累计执行时间和命令名称。否则,显示的信息将由选项控制。

有些选项可以接受列表作为参数。列表中的项目可以用逗号分隔,也可以括在引号内并以逗号或空格分隔。proclistgrplist 的值必须为数字。

ps 命令会尝试确定其是在本地调用,还是使用 ps(1B) 期望的命令语法来调用。在后一种情况下,ps 命令行为与 ps(1B) 中所述完全相同。

选项

支持以下选项:

–a

列出收到请求最频繁的所有进程的相关信息,但会话引导者以及未与终端关联的进程除外。

–A

列出所有进程的信息。与下文的 –e 相同。

–c

以体现调度程序属性的格式输出信息,如 priocntl(1) 中所述。–c 选项会影响 –f–l 选项的输出,如下文所述。

–d

列出除会话引导者以外的所有进程的相关信息。

–e

列出正在运行的每个进程的相关信息。

指定了 –e 选项时,–z–t–u–U–g–G–p–g–s–a 选项不起作用。

–f

生成一份完整列表。(请参见下文了解完整列表中各列的含义。)

–g grplist

仅列出其进程组引导者的 ID 编号出现在 grplist 中的进程数据。(进程组引导者是一个进程,其进程 ID 编号与其进程组 ID 编号相同。)

–G gidlist

列出其实际组 ID 编号出现在 gidlist 中的进程的信息。gidlist 必须是一个采用空格或逗号分隔列表格式的单一参数。

-h lgrplist

仅列出驻留在指定 lgrplist 上的进程。不列出 lgrplist 中指定的任何无效组的信息。

–H

在附加列标题 (LGRP) 下输出进程的主 lgroup。

–j

输出会话 ID 和进程组 ID。

–l

生成一份列表。(请参见下文。)

–L

输出各个所选进程中各个轻量级进程 (lwp) 的相关信息。(请参见下文。)

–n namelist

指定替代缺省设置的备用系统 namelist 文件的名称。此选项仅用于兼容目的,将被忽略。

–o format

format 给定的格式规范输出信息。“显示格式”部分中对此有全面介绍。可以指定多个 –o 选项;格式规范会解释为以空格字符分隔的所有 format 选项参数的串联。

–p proclist

仅列出其进程 ID 编号出现在 proclist 中的进程数据。

–P

在附加列标题 PSR 下,输出进程或 lwp 所绑定的处理器的数量(如果有)。

–s sidlist

列出其 ID 出现在 sidlist 中的所有会话引导者的相关信息。

–t term

仅列出与 term 关联的进程数据。将终端标识符指定为设备文件名和标识符。例如,term/apts/0

–u uidlist

仅列出其有效用户 ID 编号或登录名出现在 uidlist 中的进程数据。在列表中输出数字用户 ID,除非指定了 –f 选项(将输出登录名)。

–U uidlist

列出其实际用户 ID 编号或登录名出现在 uidlist 中的进程的相关信息。uidlist 必须是一个采用空格或逗号分隔列表格式的单一参数。

–y

在长列表 (–l) 下,将忽略已过时的 FADDR 列,加入一个 RSS 列,以报告进程的驻留集大小。而在 –y 选项下,将以千字节(而非页数)为单位报告 RSSSZ(请参见下文)。

–z zonelist

仅列出指定区域中的进程。区域可以通过名称或 ID 指定。此选项仅在全局区域中执行时有效。

–Z

在附加列标题 ZONE 下,输出与进程关联的区域名称。ZONE 列宽度限制为 8 个字符。使用 ps –eZ 可快速查看正在运行的每个进程的相关信息以及关联的区域名称。使用

ps -eo zone,uid,pid,ppid,time,comm,...

可以查看宽度大于 8 个字符的区域名称。

以下选项由 /usr/ucb/ps 命令使用(请参见 ps(1B))。/usr/bin/ps 支持这些选项,并能够使用它们模拟 UCB 行为。UCB 选项不使用连字符。您不能将这些选项与上述选项混合使用。

–r

仅输出正在运行和可运行的进程。

–S

显示此进程及其收割的所有子进程所累积使用的 CPU 时间。

–v

显示包含虚拟内存的输出版本。这包括字段 SIZE%CPU%MEMRSS,具体如下文所述。

–w

使用宽输出格式,即使用 132 列而非 80 列。如果重复选项字母(即使用 –ww),此选项将使用任意宽输出。此信息用于决定需要输出多少长命令。注意:宽输出选项只能由超级用户或拥有进程的用户查看。

–x

包含无控制终端的进程。

num

可以提供进程编号,如果提供,则仅输出该进程。此选项只能在最后提供。

以上显示的许多选项用于选择要列出的进程。如果指定了任何选项,缺省列表将被忽略,而 ps 会选择对全部选择条件选项执行同或运算所表示的进程。

显示格式

显示格式

–f 选项下,ps 将尝试通过检查用户块来确定创建进程时所提供的命令名称和参数。如果失败,则会按照未使用 –f 选项时的显示方式将命令名称输出在方括号内。

下文给出了 ps 列表中的列标题及其含义;字母 fl(分别代表完整列表和列表)表示导致显示对应标题的选项;全部则表示标题始终显示。注意:这两个选项只决定提供进程的哪些信息;它们不决定列出哪些进程。

F(l)

与进程关联的标志(十六进制且可以累加)。这些标志用于历史目的;目前不应赋予它们任何含义。

S (l)

进程的状态:

O

进程正在处理器上运行。

S

睡眠:进程正在等待某个事件完成。

R

可运行:进程在运行队列中。

T

进程因为作业控制信号或对其进行跟踪而停止。

W

正在等待:进程正在等待 CPU 使用量降低到由 CPU 上限实施的限制。

Z

僵尸状态:进程已终止并且父进程未在等待。

UID(f、l)

进程的有效用户 ID 编号(在 –f 选项下输出登录名)。

PID(全部)

进程的进程 ID(中止进程时需要使用此数据)。

PPID(f、l)

父进程的进程 ID。

C(f、l)

用于调度的处理器利用率(已过时)。使用 –c 选项时不输出内容。

CLS(f、l)

调度类。仅在使用 –c 选项时输出。

PRI(l)

进程的优先级。如果没有 –c 选项,数字越大表示优先级越低。如果有 –c 选项,数字越大表示优先级越高。

NI(l)

nice 值,用于计算优先级。使用 –c 选项时不输出内容。只有某些调度类中的进程有 nice 值。

ADDR(l)

进程的内存地址;值为 0(除非在启用所有特权的情况下运行)。

SZ(l)

进程在虚拟内存中所占的总大小(以页为单位),包括所有映射的文件和设备。请参见 pagesize(1)

WCHAN(l)

导致进程休眠的事件的地址。仅在启用所有特权的情况下运行时可见,否则为 0。要确定进程是否休眠,请检查 S 列。

STIME(f)

以小时、分钟和秒数表示的进程开始时间。(进程的开始时间比 ps 查询的执行时间早 24 小时以上时,以月数和天数表示。)

TTY(全部)

进程的控制终端(没有控制终端时输出 ? 消息)。

TIME(全部)

进程的累积执行时间。

LTIME(全部)

正在报告的 lwp 的执行时间。

CMD(全部)

命令名称(在 –f 选项下输出完整的命令名称及其参数,最多不超过 80 个字符)。

指定 –j 选项时,将输出以下两个附加列:

PGID

进程组引导者的进程 ID。

SID

会话引导者的进程 ID。

指定 –L 选项时,将输出以下两个附加列:

LWP

正在报告的 lwp 的 lwp ID。

NLWP

进程中的 lwp 数量(如果同时指定了 –f)。

–L 选项下,分别为进程中的每个 lwp 输出一行,而且时间报告字段 STIMELTIME 会显示 lwp 而非进程的值。传统的单线程进程仅包含 1 个 lwp。

已经退出并且有父进程但不是父进程所等待的进程会标记为 <defunct>

–o 格式

–o 选项允许用户自行指定输出格式。

格式规范必须是一个名称列表,以由空格或逗号分隔的单个参数的形式表示。每个变量都有一个缺省标题。通过附加等号和新的标题文本可以覆盖缺省标题。参数中的其余字符用作标题文本。指定的字段按在命令行中指定的顺序写入,并且应当在输出中排成列。字段宽度由系统选择,并且至少与标题文本(缺省值或覆盖值)等宽。如果标题文本为空,例如 –o user=,则字段至少应与缺省标题文本等宽。如果所有标题文本字段均为空,则不写入标题行。

以下名称可被 POSIX 语言环境识别:

user

进程的有效用户 ID。这是文本形式的用户 ID,前提是能够获取它并且字段宽度允许,否则使用十进制表示。

ruser

进程的实际用户 ID。这是文本形式的用户 ID,前提是能够获取它并且字段宽度允许,否则使用十进制表示。

group

进程的有效组 ID。这是文本形式的组 ID,前提是能够获取它并且字段宽度允许,否则使用十进制表示。

rgroup

进程的实际组 ID。这是文本形式的组 ID,前提是能够获取它并且字段宽度允许,否则使用十进制表示。

pid

进程 ID 的十进制值。

ppid

父进程 ID 的十进制值。

pgid

进程组 ID 的十进制值。

pcpu

最近使用的 CPU 时间与同一时段内的可用 CPU 时间之比,以百分比表示。未指定此上下文中“最近”的含义。可用的 CPU 时间以未指定的方式确定。

vsz

进程所占虚拟内存的总大小,以千字节为单位。

nice

进程的系统调度优先级,以十进制值表示。请参见 nice(1)

etime

自启动进程后所经过的时间。在 POSIX 语言环境中的格式如下:

[[dd-]hh:]mm:ss

其中

dd

为天数

hh

为小时数

mm

为分钟数

ss

为秒数

dd 字段为十进制整数。hhmmss 字段为两位数的十进制整数,且左侧使用 0 填充。

time

进程的累计 CPU 时间。在 POSIX 语言环境中的格式如下:

[dd-]hh:mm:ss

ddhhmmss 字段如 etime 说明符中所述。

tty

进程控制终端的名称(如果有),使用与 who(1) 命令相同的格式。

comm

要执行的命令的名称(argv[0] 值),以字符串形式表示。

args

命令及其所有参数,以字符串形式表示。具体实现可能会根据字段宽度截断此值;是否进行进一步截断取决于具体的实现。并未指定所表示的字符串是在命令启动时传递给命令的参数列表版本,还是可能已经由应用程序修改过的参数版本。应用程序无法确定能否对其参数列表进行修改并在 ps 输出中体现所进行的修改。Solaris 实现将字符串限制在 80 个字节;字符串为命令启动时传递给命令的参数列表。

以下名称可被 Solaris 实现所识别:

f

与进程关联的标志(十六进制且可以累加)。

s

进程状态。

c

用于调度的处理器利用率(已过时)。

uid

进程的有效用户 ID 编号,以十进制整数表示。

ruid

进程的实际用户 ID 编号,以十进制整数表示。

gid

进程的有效组 ID 编号,以十进制整数表示。

rgid

进程的实际组 ID 编号,以十进制整数表示。

projid

进程的项目 ID 编号,以十进制整数表示。

project

以文本值表示的进程的项目 ID,前提是能够获得此值;否则以十进制整数表示。

zoneid

进程的区域 ID 编号,以十进制整数表示。

zone

以文本值表示的进程的区域 ID,前提是能够获得此值;否则以十进制整数表示。

sid

会话引导者的进程 ID。

taskid

进程的任务 ID。

class

进程的调度类。

pri

进程的优先级。数字越大表示优先级越高。

opri

进程优先级(已过时)。数字越小表示优先级越高。

lwp

lwp ID 的十进制值。请求此格式选项时,系统会为进程中的每个 lwp 输出一行。

nlwp

进程中 lwp 的数量。

psr

进程或 lwp 所绑定的处理器数量。

pset

进程或 lwp 所绑定的处理器集的 ID。

addr

进程的内存地址。

osz

进程所占虚拟内存的总大小,以页为单位。

wchan

导致进程休眠的事件的地址(如果为 −,则表示进程正在运行)。

stime

进程的开始时间或日期,输出时不留空格。

rss

进程的驻留集大小,以千字节为单位。ps 所报告的 rss 值为 proc(4) 提供的估计值,该值可能小于实际驻留集大小。如果用户希望获得更精确的使用信息以进行容量规划,应使用 pmap(1) –x

pmem

进程的驻留集大小与计算机上的物理内存之比,以百分比表示。

fname

进程可执行文件的基名的前 8 个字节。

ctid

进程所属的进程合同的合同 ID,以十进制整数表示。

lgrp

进程的主 lgroup。

只有 commargs 可以包含空格字符;其他所有变量(包括 Solaris 实现变量)都不能包含空格字符。

下表指定 POSIX 语言环境中所使用的缺省标题(对应于各个格式说明符)。

格式
缺省
格式
缺省
说明符
标题
说明符
标题
args
COMMAND
ppid
PPID
comm
COMMAND
rgroup
RGROUP
etime
ELAPSED
ruser
RUSER
group
GROUP
time
TIME
nice
NI
tty
TT
pcpu
%CPU
用户
USER
pgid
PGID
vsz
VSZ
pid
PID

下表列出了 Solaris 实现的格式说明符以及与各个说明符一起使用的缺省标题。

格式
缺省
格式
缺省
说明符
标题
说明符
标题
addr
ADDR
projid
PROJID
c
C
project
PROJECT
class
CLS
psr
PSR
f
F
rgid
RGID
fname
COMMAND
rss
RSS
gid
GID
ruid
RUID
lgrp
LGRP
s
S
lwp
LWP
sid
SID
nlwp
NLWP
stime
STIME
opri
PRI
taskid
TASKID
osz
SZ
uid
UID
pmem
%MEM
wchan
WCHAN
pri
PRI
zone
ZONE
ctid
CTID
zoneid
ZONEID

示例

示例 1 使用 ps 命令

此命令:

example% ps -o user,pid,ppid=MOM -o args

将在 POSIX 语言环境中写入以下内容:

 USER  PID   MOM   COMMAND
helene  34    12   ps -o uid,pid,ppid=MOM -o args

由于可能出现截断,COMMAND 字段的内容可能不一定相同。

环境变量

有关以下影响 ps 执行的环境变量的描述,请参见 environ(5):LANG、LC_ALL、LC_CTYPE、LC_MESSAGES、LC_TIME 和 NLSPATH。

COLUMNS

覆盖系统所选的水平屏幕大小,用于确定要显示的文本列数量。

退出状态

将返回以下退出值:

0

成功完成。

>0

出现错误。

文件

/dev/pts/*

/dev/term/*

终端 (``tty'') 名称搜索程序文件

/etc/passwd

UID 信息提供程序

/proc/*

进程控制文件

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os
CSI
Enabled(已启用)(请参见“用法”)
接口稳定性
Committed(已确定)
标准
请参见 standards(5)

另请参见

kill(1)lgrpinfo(1)nice(1)pagesize(1)pmap(1)priocntl(1)who(1)ps(1B)getty(1M)proc(4)ttysrch(4)attributes(5)environ(5)resource_controls (5)standards(5)zones(5)

附注

ps 运行期间情况可能会发生变化。它提供的快照仅在瞬间有效,当您看到它时,它可能已经不准确。僵尸进程可能会输出某些不相关的数据。

如果未指定用于选择进程的选项,则 ps 会报告与控制终端关联的所有进程。如果没有控制终端,则除标题外不报告任何内容。

ps –efps –o stime 报告的可能不是 tty 登录会话的实际开始时间,而是更早的时间,即上一次在 tty 行上重新产生getty 时。

在以前的版本中,ADDRWCHAN 字段可能包含进程和/或进程正在等待的事件的内核内存地址。现在,这些字段将始终为 0,除非由一个在启用所有特权的情况下运行的进程发出请求。通过在 mdb 中使用 ::ps and ::thread dcmds 依然可以获得这些值。

ps 支持 CSI,但登录名(用户名)除外。