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、终端标识符、累计执行时间和命令名称。否则,显示的信息将由选项控制。
有些选项可以接受列表作为参数。列表中的项目可以用逗号分隔,也可以括在引号内并以逗号或空格分隔。proclist 和 grplist 的值必须为数字。
ps 命令会尝试确定其是在本地调用,还是使用 ps(1B) 期望的命令语法来调用。在后一种情况下,ps 命令行为与 ps(1B) 中所述完全相同。
支持以下选项:
列出收到请求最频繁的所有进程的相关信息,但会话引导者以及未与终端关联的进程除外。
列出所有进程的信息。与下文的 –e 相同。
以体现调度程序属性的格式输出信息,如 priocntl(1) 中所述。–c 选项会影响 –f 和 –l 选项的输出,如下文所述。
列出除会话引导者以外的所有进程的相关信息。
列出正在运行的每个进程的相关信息。
指定了 –e 选项时,–z、–t、–u、–U、–g、–G、–p、–g、–s 和 –a 选项不起作用。
生成一份完整列表。(请参见下文了解完整列表中各列的含义。)
仅列出其进程组引导者的 ID 编号出现在 grplist 中的进程数据。(进程组引导者是一个进程,其进程 ID 编号与其进程组 ID 编号相同。)
列出其实际组 ID 编号出现在 gidlist 中的进程的信息。gidlist 必须是一个采用空格或逗号分隔列表格式的单一参数。
仅列出驻留在指定 lgrplist 上的进程。不列出 lgrplist 中指定的任何无效组的信息。
在附加列标题 (LGRP) 下输出进程的主 lgroup。
输出会话 ID 和进程组 ID。
生成一份长列表。(请参见下文。)
输出各个所选进程中各个轻量级进程 (lwp) 的相关信息。(请参见下文。)
指定替代缺省设置的备用系统 namelist 文件的名称。此选项仅用于兼容目的,将被忽略。
按 format 给定的格式规范输出信息。“显示格式”部分中对此有全面介绍。可以指定多个 –o 选项;格式规范会解释为以空格字符分隔的所有 format 选项参数的串联。
仅列出其进程 ID 编号出现在 proclist 中的进程数据。
在附加列标题 PSR 下,输出进程或 lwp 所绑定的处理器的数量(如果有)。
列出其 ID 出现在 sidlist 中的所有会话引导者的相关信息。
仅列出与 term 关联的进程数据。将终端标识符指定为设备文件名和标识符。例如,term/a 或 pts/0。
仅列出其有效用户 ID 编号或登录名出现在 uidlist 中的进程数据。在列表中输出数字用户 ID,除非指定了 –f 选项(将输出登录名)。
列出其实际用户 ID 编号或登录名出现在 uidlist 中的进程的相关信息。uidlist 必须是一个采用空格或逗号分隔列表格式的单一参数。
在长列表 (–l) 下,将忽略已过时的 F 和 ADDR 列,加入一个 RSS 列,以报告进程的驻留集大小。而在 –y 选项下,将以千字节(而非页数)为单位报告 RSS 和 SZ(请参见下文)。
仅列出指定区域中的进程。区域可以通过名称或 ID 指定。此选项仅在全局区域中执行时有效。
在附加列标题 ZONE 下,输出与进程关联的区域名称。ZONE 列宽度限制为 8 个字符。使用 ps –eZ 可快速查看正在运行的每个进程的相关信息以及关联的区域名称。使用
ps -eo zone,uid,pid,ppid,time,comm,...
可以查看宽度大于 8 个字符的区域名称。
以下选项由 /usr/ucb/ps 命令使用(请参见 ps(1B))。/usr/bin/ps 支持这些选项,并能够使用它们模拟 UCB 行为。UCB 选项不使用连字符。您不能将这些选项与上述选项混合使用。
仅输出正在运行和可运行的进程。
显示此进程及其收割的所有子进程所累积使用的 CPU 时间。
显示包含虚拟内存的输出版本。这包括字段 SIZE、%CPU、%MEM 和 RSS,具体如下文所述。
使用宽输出格式,即使用 132 列而非 80 列。如果重复选项字母(即使用 –ww),此选项将使用任意宽输出。此信息用于决定需要输出多少长命令。注意:宽输出选项只能由超级用户或拥有进程的用户查看。
包含无控制终端的进程。
可以提供进程编号,如果提供,则仅输出该进程。此选项只能在最后提供。
以上显示的许多选项用于选择要列出的进程。如果指定了任何选项,缺省列表将被忽略,而 ps 会选择对全部选择条件选项执行同或运算所表示的进程。
在 –f 选项下,ps 将尝试通过检查用户块来确定创建进程时所提供的命令名称和参数。如果失败,则会按照未使用 –f 选项时的显示方式将命令名称输出在方括号内。
下文给出了 ps 列表中的列标题及其含义;字母 f 和 l(分别代表完整列表和长列表)表示导致显示对应标题的选项;全部则表示标题始终显示。注意:这两个选项只决定提供进程的哪些信息;它们不决定列出哪些进程。
与进程关联的标志(十六进制且可以累加)。这些标志用于历史目的;目前不应赋予它们任何含义。
进程的状态:
进程正在处理器上运行。
睡眠:进程正在等待某个事件完成。
可运行:进程在运行队列中。
进程因为作业控制信号或对其进行跟踪而停止。
正在等待:进程正在等待 CPU 使用量降低到由 CPU 上限实施的限制。
僵尸状态:进程已终止并且父进程未在等待。
进程的有效用户 ID 编号(在 –f 选项下输出登录名)。
进程的进程 ID(中止进程时需要使用此数据)。
父进程的进程 ID。
用于调度的处理器利用率(已过时)。使用 –c 选项时不输出内容。
调度类。仅在使用 –c 选项时输出。
进程的优先级。如果没有 –c 选项,数字越大表示优先级越低。如果有 –c 选项,数字越大表示优先级越高。
nice 值,用于计算优先级。使用 –c 选项时不输出内容。只有某些调度类中的进程有 nice 值。
进程的内存地址;值为 0(除非在启用所有特权的情况下运行)。
进程在虚拟内存中所占的总大小(以页为单位),包括所有映射的文件和设备。请参见 pagesize(1)。
导致进程休眠的事件的地址。仅在启用所有特权的情况下运行时可见,否则为 0。要确定进程是否休眠,请检查 S 列。
以小时、分钟和秒数表示的进程开始时间。(进程的开始时间比 ps 查询的执行时间早 24 小时以上时,以月数和天数表示。)
进程的控制终端(没有控制终端时输出 ? 消息)。
进程的累积执行时间。
正在报告的 lwp 的执行时间。
命令名称(在 –f 选项下输出完整的命令名称及其参数,最多不超过 80 个字符)。
指定 –j 选项时,将输出以下两个附加列:
进程组引导者的进程 ID。
会话引导者的进程 ID。
指定 –L 选项时,将输出以下两个附加列:
正在报告的 lwp 的 lwp ID。
进程中的 lwp 数量(如果同时指定了 –f)。
在 –L 选项下,分别为进程中的每个 lwp 输出一行,而且时间报告字段 STIME 和 LTIME 会显示 lwp 而非进程的值。传统的单线程进程仅包含 1 个 lwp。
已经退出并且有父进程但不是父进程所等待的进程会标记为 <defunct>。
–o 选项允许用户自行指定输出格式。
格式规范必须是一个名称列表,以由空格或逗号分隔的单个参数的形式表示。每个变量都有一个缺省标题。通过附加等号和新的标题文本可以覆盖缺省标题。参数中的其余字符用作标题文本。指定的字段按在命令行中指定的顺序写入,并且应当在输出中排成列。字段宽度由系统选择,并且至少与标题文本(缺省值或覆盖值)等宽。如果标题文本为空,例如 –o user=,则字段至少应与缺省标题文本等宽。如果所有标题文本字段均为空,则不写入标题行。
以下名称可被 POSIX 语言环境识别:
进程的有效用户 ID。这是文本形式的用户 ID,前提是能够获取它并且字段宽度允许,否则使用十进制表示。
进程的实际用户 ID。这是文本形式的用户 ID,前提是能够获取它并且字段宽度允许,否则使用十进制表示。
进程的有效组 ID。这是文本形式的组 ID,前提是能够获取它并且字段宽度允许,否则使用十进制表示。
进程的实际组 ID。这是文本形式的组 ID,前提是能够获取它并且字段宽度允许,否则使用十进制表示。
进程 ID 的十进制值。
父进程 ID 的十进制值。
进程组 ID 的十进制值。
最近使用的 CPU 时间与同一时段内的可用 CPU 时间之比,以百分比表示。未指定此上下文中“最近”的含义。可用的 CPU 时间以未指定的方式确定。
进程所占虚拟内存的总大小,以千字节为单位。
进程的系统调度优先级,以十进制值表示。请参见 nice(1)。
自启动进程后所经过的时间。在 POSIX 语言环境中的格式如下:
[[dd-]hh:]mm:ss
其中
为天数
为小时数
为分钟数
为秒数
dd 字段为十进制整数。hh、mm 和 ss 字段为两位数的十进制整数,且左侧使用 0 填充。
进程的累计 CPU 时间。在 POSIX 语言环境中的格式如下:
[dd-]hh:mm:ss
dd、hh、mm 和 ss 字段如 etime 说明符中所述。
进程控制终端的名称(如果有),使用与 who(1) 命令相同的格式。
要执行的命令的名称(argv[0] 值),以字符串形式表示。
命令及其所有参数,以字符串形式表示。具体实现可能会根据字段宽度截断此值;是否进行进一步截断取决于具体的实现。并未指定所表示的字符串是在命令启动时传递给命令的参数列表版本,还是可能已经由应用程序修改过的参数版本。应用程序无法确定能否对其参数列表进行修改并在 ps 输出中体现所进行的修改。Solaris 实现将字符串限制在 80 个字节;字符串为命令启动时传递给命令的参数列表。
以下名称可被 Solaris 实现所识别:
与进程关联的标志(十六进制且可以累加)。
进程状态。
用于调度的处理器利用率(已过时)。
进程的有效用户 ID 编号,以十进制整数表示。
进程的实际用户 ID 编号,以十进制整数表示。
进程的有效组 ID 编号,以十进制整数表示。
进程的实际组 ID 编号,以十进制整数表示。
进程的项目 ID 编号,以十进制整数表示。
以文本值表示的进程的项目 ID,前提是能够获得此值;否则以十进制整数表示。
进程的区域 ID 编号,以十进制整数表示。
以文本值表示的进程的区域 ID,前提是能够获得此值;否则以十进制整数表示。
会话引导者的进程 ID。
进程的任务 ID。
进程的调度类。
进程的优先级。数字越大表示优先级越高。
进程优先级(已过时)。数字越小表示优先级越高。
lwp ID 的十进制值。请求此格式选项时,系统会为进程中的每个 lwp 输出一行。
进程中 lwp 的数量。
进程或 lwp 所绑定的处理器数量。
进程或 lwp 所绑定的处理器集的 ID。
进程的内存地址。
进程所占虚拟内存的总大小,以页为单位。
导致进程休眠的事件的地址(如果为 −,则表示进程正在运行)。
进程的开始时间或日期,输出时不留空格。
进程的驻留集大小,以千字节为单位。ps 所报告的 rss 值为 proc(4) 提供的估计值,该值可能小于实际驻留集大小。如果用户希望获得更精确的使用信息以进行容量规划,应使用 pmap(1) –x。
进程的驻留集大小与计算机上的物理内存之比,以百分比表示。
进程可执行文件的基名的前 8 个字节。
进程所属的进程合同的合同 ID,以十进制整数表示。
进程的主 lgroup。
只有 comm 和 args 可以包含空格字符;其他所有变量(包括 Solaris 实现变量)都不能包含空格字符。
下表指定 POSIX 语言环境中所使用的缺省标题(对应于各个格式说明符)。
|
下表列出了 Solaris 实现的格式说明符以及与各个说明符一起使用的缺省标题。
|
此命令:
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。
覆盖系统所选的水平屏幕大小,用于确定要显示的文本列数量。
将返回以下退出值:
成功完成。
出现错误。
终端 (``tty'') 名称搜索程序文件
UID 信息提供程序
进程控制文件
有关下列属性的说明,请参见 attributes(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 –ef 或 ps –o stime 报告的可能不是 tty 登录会话的实际开始时间,而是更早的时间,即上一次在 tty 行上重新产生getty 时。
在以前的版本中,ADDR 和 WCHAN 字段可能包含进程和/或进程正在等待的事件的内核内存地址。现在,这些字段将始终为 0,除非由一个在启用所有特权的情况下运行的进程发出请求。通过在 mdb 中使用 ::ps and ::thread dcmds 依然可以获得这些值。
ps 支持 CSI,但登录名(用户名)除外。