ps - 报告当前进程的快照。
概要
ps [选项]
描述
ps 显示所选活动的进程的信息。如果您希望对选择和显示的信息进行重复更新,请使用 top。
此版本的 ps 接受以下几种类型的选项:
1. UNIX 选项,这些选项可以组合在一起,并且必须以破折号开头。
2. BSD 选项,这些选项可以组合在一起,并且不能与破折号一起使用。
3. GNU 长选项,这些选项以两个破折号开头。
可以自由地混合不同类型的选项,但可能会出现冲突。由于 ps 兼容许多标准和实现,因此存在一些功能相同的选项。
默认情况下,ps 选择具有与当前用户相同的有效用户 ID (euid=EUID) 并且与调用者关联到相同终端的所有进程。它显示进程 ID (pid=PID)、与进程关联的终端 (tname=TTY)、累积的 CPU 时间(以 [DD-]hh:mm:ss 格式显示)(time=TIME) 和可执行文件名 (ucmd=CMD)。默认情况下,输出是未排序的。
使用 BSD 样式的选项会将进程状态 (stat=STAT) 添加到默认显示中,并显示命令参数 (args=COMMAND),而不是可执行文件名。可以使用 PS_FORMAT 环境变量来覆盖此设置。使用 BSD 样式的选项还会更改进程选择,以包括其他终端 (TTY) 上的进程,这些进程由您拥有;或者,也可以描述为将选择设置为所有进程的集合,并过滤掉其他用户拥有的或不在终端上的进程。在描述选项“相同”时,不考虑这些影响,因此 -M 将被认为是与 Z 相同的选项,依此类推。
除非另有说明,否则进程选择选项是累加的。默认选择将被丢弃,然后将选定的进程添加到要显示的进程集中。因此,如果进程满足任何给定的选择标准,它将被显示。
示例
要使用标准语法查看系统上的所有进程: ps -e ps -ef ps -eF ps -ely
要使用 BSD 语法查看系统上的所有进程: ps ax ps axu
要打印进程树: ps -ejH ps axjf
要获取有关线程的信息: ps -eLf ps axms
要获取安全信息: ps -eo euser,ruser,suser,fuser,f,comm,label ps axZ ps -eM
要查看以 root 用户(实际和有效 ID)运行的所有进程,并以用户格式显示: ps -U root -u root u
要使用用户定义的格式查看所有进程: ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm ps -Ao pid,tt,user,fname,tmout,f,wchan
仅打印 syslogd 的进程 ID: ps -C syslogd -o pid=
仅打印 PID 42 的名称: ps -q 42 -o comm=
简单进程选择
a 取消 BSD 样式的“仅自身”限制,该限制应用于所有进程,当使用某些 BSD 样式的选项(不带“-”)或当 ps 的个性设置类似于 BSD 时。 以这种方式选择的进程集是除了其他方式选择的进程集之外的。 另一种描述是,此选项使 ps 列出所有具有终端 (tty) 的进程,或者与 x 选项一起使用时,列出所有进程。
-A 选择所有进程。 与 -e 相同。
-a 选择所有进程,但不包括会话领导者(参见 getsid(2))和未与终端关联的进程。
-d 选择所有进程,但不包括会话领导者。
--deselect
选择所有不满足指定条件的进程(否定选择)。 与 -N 相同。
-e 选择所有进程。 与 -A 相同。
g 实际上是所有进程,甚至是会话领导者。 此标志已过时,并且可能在未来的版本中弃用。 通常它由 a 标志隐含,并且仅在以 sunos4 个性运行的情况下才有用。
-N 选择所有不满足指定条件的进程(否定选择)。 与 --deselect 相同。
T 选择与此终端关联的所有进程。 与不带任何参数的 t 选项相同。
r 将选择限制为仅运行中的进程。
x 取消 BSD 样式的“必须具有 tty”限制,该限制应用于所有进程,当使用某些 BSD 样式的选项(不带“-”)或当 ps 的个性设置类似于 BSD 时。 以这种方式选择的进程集是除了其他方式选择的进程集之外的。 另一种描述是,此选项使 ps 列出所有由您拥有的进程(与 ps 具有相同的 EUID),或者与 a 选项一起使用时,列出所有进程。
按列表进行进程选择
这些选项接受单个参数,形式为以空格或逗号分隔的列表。 它们可以多次使用。 例如:ps -p "1 2" -p 3,4
123 与 --pid 123 相同。
+123 与 --sid 123 相同。
-123 按进程组 ID (PGID) 选择。
-C cmdlist
按命令名称选择。 这会选择可执行名称位于 cmdlist 中的进程。 注意:命令名称与命令行不同。 procps 和内核的早期版本将此命令名称截断为 15 个字符。 此限制不再存在于两者中。 如果您依赖于仅匹配 15 个字符,那么现在可能无法获得匹配项。
-G grplist
按实际组 ID (RGID) 或名称选择。 这会选择其实际组名称或 ID 位于 grplist 列表中的进程。 实际组 ID 标识创建进程的用户的组,请参阅 getgid(2)。
-g grplist
按会话或有效组名进行选择。按会话进行选择是许多标准所规定的,但按有效组进行选择是从逻辑上讲其他一些操作系统采用的行为。当列表完全为数字时(如会话),此 `ps` 命令将按会话进行选择。组 ID 编号只有在同时指定了一些组名时才有效。请参阅 `-s` 和 `--group` 选项。
--Group grplist
按实际组 ID(RGID)或名称进行选择。与 `-G` 相同。
--group grplist
按有效组 ID(EGID)或名称进行选择。此选项选择其有效组名称或 ID 位于 `grplist` 中的进程。有效组 ID 描述了进程所使用的文件访问权限的组(请参阅 `getegid(2)`)。`-g` 选项通常是 `--group` 的替代方案。
p pidlist
按进程 ID 选择。与 `-p` 和 `--pid` 相同。
-p pidlist
按 PID 选择。此选项选择其进程 ID 编号出现在 `pidlist` 中的进程。与 `p` 和 `--pid` 相同。
--pid pidlist
按进程 ID 选择。与 `-p` 和 `p` 相同。
--ppid pidlist
按父进程 ID 选择。此选项选择其父进程 ID 位于 `pidlist` 中的进程。也就是说,它选择那些进程 ID 位于 `pidlist` 中的进程的子进程。
q pidlist
按进程 ID 选择(快速模式)。与 `-q` 和 `--quick-pid` 相同。
-q pidlist
按 PID 选择(快速模式)。此选项选择其进程 ID 编号出现在 `pidlist` 中的进程。使用此选项时,`ps` 命令只会读取 `pidlist` 中列出的 PID 所需的信息,并且不会应用其他筛选规则。PID 的顺序未排序且保持不变。在此模式下,不允许使用其他选择选项、排序和树形列表。与 `q` 和 `--quick-pid` 相同。
--quick-pid pidlist
按进程 ID 选择(快速模式)。与 `-q` 和 `q` 相同。
-s sesslist
按会话 ID 选择。此选项选择其会话 ID 位于 `sesslist` 中的进程。
--sid sesslist
按会话 ID 选择。与 `-s` 相同。
t ttylist
按 tty 选择。与 `-t` 和 `--tty` 几乎相同,但也可以与空 `ttylist` 一起使用,以指示与 `ps` 命令关联的终端。使用 `T` 选项被认为比使用 `t` 选项和空 `ttylist` 更好。
-t ttylist
按 tty 选择。此选项选择与 `ttylist` 中给定的终端关联的进程。终端(tty 或文本输出的屏幕)可以以多种形式指定:`/dev/ttyS1`、`ttyS1`、`S1`。可以使用简单的 `"-"` 来选择未附加到任何终端的进程。
--tty ttylist
按终端选择。与 `-t` 和 `t` 相同。
U userlist
按有效用户 ID(EUID)或名称进行选择。此选项选择其有效用户名或 ID 位于 `userlist` 中的进程。有效用户 ID 描述了进程所使用的文件访问权限的用户(请参阅 `geteuid(2)`)。与 `-u` 和 `--user` 相同。
-U userlist
按实际用户 ID (RUID) 或名称进行选择。它选择其实际用户名或 ID 位于 userlist 列表中的进程。实际用户 ID 标识创建该进程的用户,请参阅 getuid(2)。
-u userlist
按有效用户 ID (EUID) 或名称进行选择。这选择其有效用户名或 ID 位于 userlist 中的进程。
有效用户 ID 描述了进程使用哪个文件访问权限的用户(请参阅 geteuid(2))。与 U 和 --user 相同。
--User userlist
按实际用户 ID (RUID) 或名称进行选择。与 -U 相同。
--user userlist
按有效用户 ID (EUID) 或名称进行选择。与 -u 和 U 相同。
输出格式控制
这些选项用于选择 ps 显示的信息。输出可能因个性而异。
-c 显示与 -l 选项不同的调度器信息。
--context
显示安全上下文格式(用于 SELinux)。
-f 进行完整格式列表。此选项可以与其他许多类 UNIX 选项组合,以添加额外的列。它还会导致打印命令参数。与 -L 结合使用时,将添加 NLWP(线程数)和 LWP(线程 ID)列。请参阅 c 选项、format 关键字 args 和 format 关键字 comm。
-F 额外的完整格式。请参阅 -f 选项,-F 意味着该选项。
--format format
用户定义的格式。与 -o 和 o 相同。
j BSD 作业控制格式。
-j 作业格式。
l 显示 BSD 长格式。
-l 长格式。-y 选项通常与此选项一起使用。
-M 添加一列安全数据。与 Z(用于 SELinux)相同。
O format
是预加载的 o(重载)。BSD 的 O 选项可以像 -O(带有某些常用字段预定义的、用户定义的输出格式)一样,也可以用于指定排序顺序。启发式方法用于确定此选项的行为。要确保获得所需的行为(排序或格式化),请以其他方式指定该选项(例如,使用 -O 或 --sort)。当用作格式化选项时,它与 -O 相同,并且具有 BSD 个性。
-O format
类似于 -o,但预加载了一些默认列。与 -o pid,format,state,tname,time,command 或 -o pid,format,tname,time,cmd 相同,请参阅 -o 下方。
o format
指定用户定义的格式。与 -o 和 --format 相同。
-o format
用户定义的格式。format 是一个参数,采用空白分隔或逗号分隔的列表形式,它提供了一种指定单个输出列的方式。已识别的关键字在 STANDARD FORMAT SPECIFIERS 部分中描述。可以根据需要重命名标题(ps -o pid,ruser=RealUser -o comm=Command)。如果所有列标题都为空(ps -o pid= -o comm=),则不会输出标题行。列宽将根据需要增加以适应宽标题;这可用于加宽诸如 WCHAN 之类的列(ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm)。还提供显式宽度控制(ps -o pid,wchan:42,cmd)。ps -o pid=X,comm=Y 的行为因个性而异;输出可能是命名为“X,comm=Y”的一列,或者是命名为“X”和“Y”的两列。如果不确定,请使用多个 -o 选项。可以使用 PS_FORMAT 环境变量来指定默认值,如果需要,可以使用 DefSysV 和 DefBSD 宏来选择默认的 UNIX 或 BSD 列。
-P 添加一列显示psr。
s 显示信号格式。
u 显示用户友好格式。
v 显示虚拟内存格式。
X 注册格式。
-y 不显示标志;显示rss代替addr。此选项只能与-l一起使用。
Z 添加一列安全数据。与-M(用于SELinux)相同。
输出修改器
c 显示真实的命令名称。这是从可执行文件的名称派生的,而不是从argv值派生的。因此,命令参数及其任何修改都不会显示。此选项有效地将args格式关键字转换为comm格式关键字;它与-f格式选项以及各种BSD样式的格式选项一起使用,因为所有这些选项通常都会显示命令参数。请参阅-f选项、格式关键字args和格式关键字comm。
--cols n
设置屏幕宽度。
--columns n
设置屏幕宽度。
--cumulative
包括一些已终止子进程的数据(作为与父进程的总和)。
-D format
将lstart字段的日期格式设置为format。此格式由strftime(3)解析,并且应该最多有24个字符,以避免错位列。
--date-format format
与-D相同。
e 在命令之后显示环境变量。
f ASCII艺术进程层次结构(森林)。
--forest
ASCII艺术进程树。
h 不显示标题。(或者,在BSD个性化中,每页显示一个标题。)h选项存在问题。标准的BSD ps使用此选项来在输出的每一页上打印一个标题,但较早的Linux ps使用此选项完全禁用标题。此版本的ps遵循Linux用法,即除非选择了BSD个性化,否则不打印标题,在这种情况下,它会在输出的每一页上打印一个标题。无论当前的个性化如何,您都可以使用长选项--headers和--no-headers来启用每页打印标题或完全禁用标题。
-H 显示进程层次结构(森林)。
--headers
重复标题行,每页输出一行。
k spec 指定排序顺序。排序语法为[+|-]key[,[+|-]key[,...]]。从标准格式说明符部分中选择一个多字母的键。"+"是可选的,因为默认方向为递增的数字或词法顺序。与--sort相同。
示例:
ps jaxkuid,-ppid,+pid
ps axk comm o comm,args
ps kstart_time -ef
--lines n
设置屏幕高度。
n 为 WCHAN 和 USER(包括所有类型的 UID 和 GID)提供数字输出。
--no-headers
不打印任何标题行。--no-heading 是此选项的别名。
O order
排序顺序(重载)。BSD O 选项可以像 -O 一样工作(用户定义的输出格式,其中一些常见字段是预定义的),也可以用于指定排序顺序。使用启发式方法来确定此选项的行为。为了确保获得所需的行为(排序或格式化),请以其他方式指定该选项(例如,使用 -O 或 --sort)。
对于排序,过时的 BSD O 选项语法为 O[+|-]k1[,[+|-]k2[,...]]。它根据由一个字母的短键 k1、k2 等组成的序列指定的多级排序来对进程列表进行排序,这些键在“过时的排序键”部分中描述。"+" 目前是可选的,只是重复了默认方向,但可能有助于区分 O 排序和 O 格式。"-" 仅反转其前面的键的方向。
--rows n
设置屏幕高度。
S 将一些信息(例如 CPU 使用率)从已终止的子进程中汇总到其父进程中。这对于检查父进程重复分叉出短生命周期子进程来执行工作的系统非常有用。
--sort spec
指定排序顺序。排序语法为 [+|-]key[,[+|-]key[,...]]。从“标准格式说明符”部分中选择一个多字母的键。"+" 是可选的,因为默认方向为递增的数字或词法顺序。与 k 相同。例如:ps jax --sort=uid,-ppid,+pid
--signames
使用缩写的信号名称显示信号掩码,并扩展该列。如果列宽无法显示所有信号,则该列将以加号 "+" 结尾。仅包含连字符的列表示没有信号。
w 宽输出。使用此选项两次以获得无限宽度。
-w 宽输出。使用此选项两次以获得无限宽度。
--width n
设置屏幕宽度。
线程显示
H 将线程显示为进程。
-L 显示线程,可能显示 LWP 和 NLWP 列。
m 在进程之后显示线程。
-m 在进程之后显示线程。
-T 显示线程,可能显示 SPID 列。
其他信息
--help section
打印帮助消息。该 section 参数可以是 simple、list、output、threads、misc 或 all。该参数可以缩写为以下下划线的字母:s|l|o|t|m|a。
--info 打印调试信息。
L 列出所有格式说明符。
V 打印 procps-ng 版本。
-V 打印 procps-ng 版本。
--version
打印 procps-ng 版本。
注意事项
此 ps 通过读取 /proc 中的虚拟文件来工作。此 ps 不需要设置为 kmem 用户或具有任何权限才能运行。请勿为此 ps 提供任何特殊权限。
CPU 使用率当前表示为进程在其整个生命周期中花费的运行时间的百分比。这并不是理想的,并且不符合 ps 否则符合的标准。CPU 使用率不太可能正好加起来等于 100%。
SIZE 和 RSS 字段不包括进程的某些部分,例如页表、内核堆栈、struct thread_info 和 struct task_struct。通常,这至少是 20 KiB 始终驻留在内存中的内容。SIZE 是进程的虚拟大小(代码 + 数据 + 堆栈)。
标记为
如果用户名的长度大于显示列的宽度,则用户名将被截断。请参阅 -o 和 -O 格式化选项以自定义长度。
不建议使用诸如 ps -aux 之类的命令选项,因为这会混淆两种不同的标准。根据 POSIX 和 UNIX 标准,上述命令请求显示所有具有 TTY 的进程(通常是用户正在运行的命令)以及所有属于用户 x 的进程。如果该用户不存在,则 ps 会假定你真正想要的是“ps aux”。
进程标志
这些值的总和显示在“F”列中,该列由标志输出说明符提供:
1 forked 但未 exec
4 使用了超级用户权限
进程状态码
以下是 s、stat 和 state 输出说明符(标题为“STAT”或“S”)将显示的用于描述进程状态的不同值:
D 不可中断睡眠(通常是 IO)
I 空闲内核线程
R 正在运行或可运行(在运行队列中)
S 可中断睡眠(等待事件完成)
T 由作业控制信号停止
t 在调试期间由调试器停止
W 分页(自 2.6.xx 内核以来无效)
X 已死(不应出现)
Z defunct(“僵尸”)进程,已终止但未被其父进程回收
对于 BSD 格式以及使用 stat 关键字时,可能会显示其他字符:
< 高优先级(对其他用户不友好)
N 低优先级(对其他用户友好)
L 将页面锁定到内存中(用于实时和自定义 IO)
s 是会话领导者
l 是多线程的(使用 CLONE_THREAD,就像 NPTL pthreads 一样)
+ 位于前台进程组中
已过时的排序键
这些键由 BSD O 选项使用(当它用于排序时)。GNU --sort 选项不使用这些键,但使用在以下 STANDARD FORMAT SPECIFIERS 部分中描述的说明符。请注意,用于排序的值是 ps 使用的内部值,而不是在某些输出格式字段中使用的“已处理”值(例如,按 tty 排序将按设备号排序,而不是按显示的终端名称排序)。如果要按已处理的值排序,请将 ps 的输出通过管道传递到 sort(1) 命令。 键 长格式 描述 c cmd 可执行文件的简单名称 C pcpu CPU 利用率 f flags 标志,如长格式 F 字段中所示 g pgrp 进程组 ID G tpgid 控制终端进程组 ID j cutime 累计用户时间 J cstime 累计系统时间 k utime 用户时间 m min_flt 轻量页面错误的数量 M maj_flt 重大页面错误的数量 n cmin_flt 累计轻量页面错误的数量 N cmaj_flt 累计重大页面错误的数量 o session 会话 ID p pid 进程 ID P ppid 父进程 ID r rss 常驻集大小 R resident 常驻页 s size 内存大小(以千字节为单位) S share 共享页的数量 t tty 控制终端的设备号 T start_time 进程启动的时间 U uid 用户 ID 编号 u user 用户名 v vsize 总 VM 大小(以 KiB 为单位) y priority 内核调度优先级
AIX 格式描述符
本手册支持 AIX 格式描述符,其工作方式类似于 printf(1) 和 printf(3) 的格式化代码。例如,可以使用以下命令生成正常的默认输出:ps -eo "%p %y %x %c"。NORMAL 代码将在下一节中描述。
代码 NORMAL 标题
%C pcpu %CPU
%G group GROUP
%P ppid PPID
%U user USER
%a args COMMAND
%c comm COMMAND
%g rgroup RGROUP
%n nice NI
%p pid PID
%r pgid PGID
%t etime ELAPSED
%u ruser RUSER
%x time TIME
%y tty TTY
%z vsz VSZ
标准格式说明符
以下是可用于控制输出格式(例如,使用 -o 选项)或使用 GNU 样式的 --sort 选项对所选进程进行排序的不同关键字。
例如:ps -eo pid,user,args --sort user
此版本的 ps 尝试识别其他 ps 实现中使用的所有关键字。
以下用户定义的格式说明符可以包含空格:args、cmd、comm、command、fname、ucmd、ucomm、lstart、bsdstart、start。
某些关键字可能无法用于排序。
代码 标题 描述
%cpu %CPU 进程的 CPU 利用率,格式为“##.#”。当前,它是 CPU 时间除以进程运行时间(cputime/realtime 比率),以百分比表示。除非您很幸运,否则它不会加起来等于 100%。(别名 pcpu)。
%mem %MEM 进程的驻留集大小与机器上物理内存的比率,以百分比表示。(别名 pmem)。
ag_id AGID 与进程关联的自动组标识符,它与 CFS 调度程序结合使用,以提高交互式桌面性能。
ag_nice AGNI 自动组 nice 值,它会影响该组中所有进程的调度。
args COMMAND 命令及其所有参数,以字符串形式呈现。参数的修改可能会显示出来。 此列的输出可能包含空格。 标记为 `<defunct>` 的进程部分已死,正在等待其父进程完全销毁。 有时,进程的参数可能无法获得;在这种情况下,`ps` 会在方括号中打印可执行文件名。(别名:cmd、command)。 另请参阅 `comm` 格式关键字、`-f` 选项和 `c` 选项。
当指定为最后一个时,此列将扩展到显示的边缘。
如果 `ps` 无法确定显示宽度,例如将输出重定向(通过管道)到文件或另一个命令时,则输出宽度未定义(可能是 80,无限制,由 `TERM` 变量决定,等等)。 可以使用 `COLUMNS` 环境变量或 `--cols` 选项来准确确定在这种情况下使用的宽度。 还可以使用 `w` 或 `-w` 选项来调整宽度。
blocked BLOCKED 被阻止的信号掩码,请参阅 `signal(7)`。 根据字段的宽度,将显示一个 32 位或 64 位十六进制格式的掩码,除非使用了 `--signames` 选项。(别名:sig_block、sigmask)。
bsdstart START 命令启动的时间。 如果进程的启动时间少于 24 小时,则输出格式为“HH:MM”,否则为“Mmm:SS”(其中 Mmm 是月份的三个字母)。 另请参阅 `lstart`、`start`、`start_time` 和 `stime`。
bsdtime TIME 累积的 CPU 时间,用户时间 + 系统时间。 显示格式通常为“MMM:SS”,但如果进程使用了超过 999 分钟的 CPU 时间,则可以向右移动。
c C 处理器利用率。 目前,这是进程生命周期内的百分比使用的整数值。(参见 `%cpu`)。
caught CAUGHT 捕获的信号掩码,请参阅 `signal(7)`。 根据字段的宽度,将显示一个 32 位或 64 位十六进制格式的掩码,除非使用了 `--signames` 选项。(别名:sig_catch、sigcatch)。
cgname CGNAME 控制组的显示名称,进程属于该控制组。
cgroup CGROUP 显示进程所属的控制组。
cgroupns CGROUPNS 描述进程所属命名空间的唯一 inode 编号。 请参阅 `namespaces(7)`。
class CLS 进程的调度类。(别名:policy、cls)。 字段的可能值为:
- 未报告
TS SCHED_OTHER
FF SCHED_FIFO
RR SCHED_RR
B SCHED_BATCH
ISO SCHED_ISO
IDL SCHED_IDLE
DLN SCHED_DEADLINE
? 未知值
cls CLS 进程的调度类。(别名:policy、cls)。 字段的可能值为:
- 未报告
TS SCHED_OTHER
FF SCHED_FIFO
RR SCHED_RR
B SCHED_BATCH
ISO SCHED_ISO
IDL SCHED_IDLE
DLN SCHED_DEADLINE
? 未知值
cmd CMD 请参阅 `args`。(别名:args、command)。
comm COMMAND 命令名(仅限可执行文件名)。 此列的输出可能包含空格。(别名 ucmd、ucomm)。 另请参阅 args 格式关键字、-f 选项和 c 选项。
当指定为最后一个选项时,此列将扩展到显示的边缘。
如果 ps 无法确定显示宽度,例如当输出重定向(通过管道)到文件或其他命令时,输出宽度未定义(可能是 80 个字符、无限,由 TERM 变量确定等)。 可以使用 COLUMNS 环境变量或 --cols 选项来准确确定这种情况下的宽度。 也可以使用 w 或 -w 选项来调整宽度。
command COMMAND 请参阅 args。(别名 args、command)。
cp CP 千分之一(百分之一)CPU 使用率。(请参阅 %cpu)。
cputime TIME 累计 CPU 时间,格式为“[DD-]hh:mm:ss”。(别名 time)。
cputimes TIME 累计 CPU 时间,以秒为单位。(别名 times)。
cuc %CUC 包括已终止子进程在内的进程 CPU 利用率,采用扩展的“##.###”格式。(另请参阅 %cpu、c、cp、cuu、pcpu)。
cuu %CUU 进程 CPU 利用率,采用扩展的“##.###”格式。(另请参阅 %cpu、c、cp、cuc、pcpu)。
drs DRS 数据驻留集大小,进程保留的专用内存量。 它也被称为 DATA。 此内存可能尚未映射到 rss,但始终包含在 vsz 中。
egid EGID 进程的有效组 ID 编号,以十进制整数形式表示。(别名 gid)。
egroup EGROUP 进程的有效组 ID。 如果可以获取,并且字段宽度允许,这将是文本组 ID;否则,将是十进制表示形式。(别名 group)。
eip EIP 指令指针。 从内核 4.9.xx 开始,除非任务正在退出或正在进行核心转储,否则它将被设置为零。
esp ESP 堆栈指针。 从内核 4.9.xx 开始,除非任务正在退出或正在进行核心转储,否则它将被设置为零。
etime ELAPSED 自进程启动以来经过的时间,格式为 [[DD-]hh:]mm:ss。
etimes ELAPSED 自进程启动以来经过的时间,以秒为单位。
euid EUID 有效用户 ID(别名 uid)。
euser EUSER 有效用户名。 如果可以获取,并且字段宽度允许,这将是文本用户 ID;否则,将是十进制表示形式。 可以使用 n 选项来强制使用十进制表示形式。(别名 uname、user)。
exe EXE 可执行文件的路径。 如果无法通过 cmd、comm 或 args 格式选项打印路径,则此选项很有用。
f F 与进程关联的标志,请参阅“进程标志”部分。(别名 flag、flags)。
fgid FGID 文件系统访问组 ID。(别名 fsgid)。
fgroup FGROUP 文件系统访问组 ID。 如果可以获取,并且字段宽度允许,这将是文本组 ID;否则,将是十进制表示形式。(别名 fsgroup)。
flag F 参见 f。 (别名 f, flags)。
flags F 参见 f。 (别名 f, flag)。
fname COMMAND 进程的可执行文件的基本名称的前 8 个字节。 输出的这一列可能包含空格。
fuid FUID 文件系统访问用户 ID。(别名 fsuid)。
fuser FUSER 文件系统访问用户 ID。 如果可以获取,并且字段宽度允许,这将是文本用户 ID,否则将是十进制表示形式。
gid GID 参见 egid。 (别名 egid)。
group GROUP 参见 egroup。 (别名 egroup)。
ignored IGNORED 忽略的信号的掩码,参见 signal(7)。 根据字段的宽度,将显示 32 位或 64 位十六进制格式的掩码,除非使用了 --signames 选项。(别名 sig_ignore, sigignore)。
ipcns IPCNS 描述进程所属的命名空间的唯一 inode 编号。 参见 namespaces(7)。
label LABEL 安全标签,最常用于 SELinux 上下文数据。 这是用于高安全性系统中的强制访问控制 (MAC)。
lstart STARTED 命令开始的时间。 这将采用“DDD mmm HH:MM:SS YYY”的形式,除非通过 -D 选项进行了更改。
lsession SESSION 显示进程的登录会话标识符,如果已包含 systemd 支持。
luid LUID 显示与进程关联的登录 ID。
lwp LWP 轻量级进程(线程)ID,它是可调度的实体(别名 spid, tid)。 请参见 tid 以获取更多信息。
lxc LXC 任务正在运行的 lxc 容器的名称。 如果进程不在容器内运行,则显示一个破折号('-')。
machine MACHINE 显示分配给 VM 或容器的进程的机器名称,如果已包含 systemd 支持。
maj_flt MAJFLT 已发生此进程的主要页面错误的数量。
min_flt MINFLT 已发生此进程的次要页面错误的数量。
mntns MNTNS 描述进程所属的命名空间的唯一 inode 编号。 参见 namespaces(7)。
netns NETNS 描述进程所属的命名空间的唯一 inode 编号。 参见 namespaces(7)。
ni NI nice 值。 这范围从 19(最友好)到 -20(对其他进程不太友好),参见 [nice]({filename}../../nice)(1)。 (别名 nice)。
nice NI 参见 ni。(别名 ni)。
nlwp NLWP 进程中的轻量级进程(线程)数。(别名 thcount)。
numa NUMA 与最近使用的处理器关联的节点。 -1 表示 NUMA 信息不可用。
nwchan WCHAN 进程正在休眠的内核函数的地址(如果需要内核函数名称,请使用 wchan)。
oom OOM 缺存储得分。 该值范围为 0 到 +1000,用于选择在内存耗尽时要终止的任务。
oomadj OOMADJ 内存不足调整因子。该值会添加到当前的内存不足分数中,然后用于确定在内存耗尽时终止哪个任务。
ouid OWNER 如果系统已包含 systemd 支持,则显示进程会话的所有者的 Unix 用户标识。
pcpu %CPU 请参阅 %cpu。(别名 %cpu)。
pending PENDING 待处理信号的掩码。请参阅 signal(7)。进程上待处理的信号与单个线程上待处理的信号不同。使用 m 选项或 -m 选项以查看两者。根据字段的宽度,将显示 32 位或 64 位十六进制格式的掩码,除非使用了 --signames 选项。(别名 sig)。
pgid PGID 进程组 ID,或者等效地,进程组领导者的进程 ID。(别名 pgrp)。
pgrp PGRP 请参阅 pgid。(别名 pgid)。
pid PID 表示进程 ID 的数字(别名 tgid)。
pidns PIDNS 描述进程所属的命名空间的唯一 inode 编号。请参阅 namespaces(7)。
pmem %MEM 请参阅 %mem。(别名 %mem)。
policy POL 进程的调度类。(别名 class, cls)。可能的值包括:
- 未报告
TS SCHED_OTHER
FF SCHED_FIFO
RR SCHED_RR
B SCHED_BATCH
ISO SCHED_ISO
IDL SCHED_IDLE
DLN SCHED_DEADLINE
? 未知值
ppid PPID 父进程 ID。
pri PRI 进程的优先级。较高的数字表示较高的优先级。
psr PSR 进程上次执行的处理器。
pss PSS 按比例分配大小,非交换的物理内存,共享内存按比例分配给映射它的所有任务。
rbytes RBYTES 该进程实际导致从存储层读取的字节数。
rchars RCHARS 该任务导致从存储读取的字节数。
rgid RGID 实际组 ID。
rgroup RGROUP 实际组名称。如果可以获取并且字段宽度允许,这将是文本组 ID,否则将是十进制表示形式。
rops ROPS 读取 I/O 操作的数量,即诸如 read(2) 和 pread(2) 之类的系统调用。
rss RSS 常驻集大小,任务使用的非交换物理内存(以千字节为单位)。(别名 rssize, rsz)。
rssize RSS 请参阅 rss。(别名 rss, rsz)。
rsz RSZ 请参阅 rss。(别名 rss, rssize)。
rtprio RTPRIO 实时优先级。
ruid RUID 实际用户 ID。
ruser RUSER 实际用户 ID。如果可以获取并且字段宽度允许,这将是文本用户 ID,否则将是十进制表示形式。
s S 最小状态显示(单个字符)。请参阅 PROCESS STATE CODES 部分,了解不同的值。如果需要显示更多信息,请参阅 stat。 (别名 state)。
sched SCH 进程的调度策略。策略 SCHED_OTHER (SCHED_NORMAL)、SCHED_FIFO、SCHED_RR、SCHED_BATCH、SCHED_ISO、SCHED_IDLE 和 SCHED_DEADLINE 分别显示为 0、1、2、3、4、5 和 6。
seat SEAT 如果系统包含 systemd 支持,则显示与分配给特定工作区的硬件设备关联的标识符。
sess SESS 会话 ID 或会话领导进程的进程 ID。(别名:session, sid)。
sgi_p P 进程当前正在运行的处理器。如果进程当前未运行或可运行,则显示“*”。
sgid SGID 保存的组 ID。(别名:svgid)。
sgroup SGROUP 保存的组名称。如果可以获取,并且字段宽度允许,则将显示文本组 ID;否则,将显示十进制表示形式。
sid SID 请参见 sess。(别名:sess, session)。
sig PENDING 请参见 pending。(别名:pending, sig_pend)。
sigcatch CAUGHT 请参见 caught。(别名:caught, sig_catch)。
sigignore IGNORED 请参见 ignored。(别名:ignored, sig_ignore)。
sigmask BLOCKED 请参见 blocked。(别名:blocked, sig_block)。
size SIZE 如果进程将所有可写页面设为“脏页”然后被交换出去,则需要的大致交换空间量。这个数字非常粗略!
slice SLICE 如果系统包含 systemd 支持,则显示进程所属的切片单元。
spid SPID 请参见 lwp。(别名:lwp, tid)。
stackp STACKP 进程栈底(起始)的地址。
start STARTED 命令开始的时间。如果进程开始的时间少于 24 小时,则输出格式为“HH:MM:SS”,否则为“ Mmm dd”(其中 Mmm 是一个三字母的月份名称)。另请参见 bsdstart、start、start_time 和 stime。
start_time START 进程的启动时间或日期。如果进程不是在 ps 启动的同一年启动的,则仅显示年份;如果在同一天启动,则显示“MmmDD”;否则,显示“HH:MM”。另请参见 bsdstart、start、lstart 和 stime。
stat STAT 多字符进程状态。请参见“PROCESS STATE CODES”部分,了解不同值的含义。如果您只需要显示第一个字符,请参阅 s 和 state。
state S 请参见 s。(别名:s)。
stime STIME 请参见 start_time。(别名:start_time)。
suid SUID 保存的用户 ID。(别名:svuid)。
supgid SUPGID 辅助组的组 ID(如果有)。请参见 getgroups(2)。
supgrp SUPGRP 辅助组的组名称(如果有)。请参见 getgroups(2)。
suser SUSER 保存的用户名。如果可以获取,并且字段宽度允许,则将显示文本用户 ID;否则,将显示十进制表示形式。(别名:svuser)。
svgid SVGID 请参见 sgid。(别名 sgid)。
svuid SVUID 请参见 suid。(别名 suid)。
sz SZ 进程核心镜像的物理页面大小。这包括文本、数据和堆栈空间。当前不包括设备映射;这可能会发生变化。请参见 vsz 和 rss。
tgid TGID 表示任务所属的线程组的编号(别名 pid)。它是线程组领导者的进程 ID。
thcount THCNT 请参见 nlwp。(别名 nlwp)。进程拥有的内核线程数。
tid TID 表示可调度的实体的唯一编号(别名 spid、tid)。此值也可能显示为:进程 ID(pid);进程组 ID(pgrp);会话领导者的会话 ID(sid);线程组领导者的线程组 ID(tgid);以及进程组领导者的 tty 进程组 ID(tpgid)。
time TIME 累计 CPU 时间,格式为“[DD-]HH:MM:SS”。(别名 cputime)。
timens TIMENS 描述进程所属命名空间的唯一 inode 编号。请参见 namespaces(7)。
times TIME 累计 CPU 时间,以秒为单位(别名 cputimes)。
tname TTY 控制 tty(终端)。(别名 tt、tty)。
tpgid TPGID 连接到 tty(终端)的进程的前台进程组 ID,如果进程未连接到 tty,则为 -1。
trs TRS 文本驻留集大小,即用于可执行代码的物理内存量。
tt TT 控制 tty(终端)。(别名 tname、tty)。
tty TT 控制 tty(终端)。(别名 tname、tt)。
ucmd CMD 请参见 comm。(别名 comm、ucomm)。
ucomm COMMAND 请参见 comm。(别名 comm、ucmd)。
uid UID 请参见 euid。(别名 euid)。
uname USER 请参见 euser。(别名 euser、user)。
unit UNIT 如果包含 systemd 支持,则显示进程所属的单元。
user USER 请参见 euser。(别名 euser、uname)。
userns USERNS 描述进程所属的命名空间的唯一 inode 编号。请参见 namespaces(7)。
uss USS 唯一集大小,即未交换到磁盘且不与另一个任务共享的物理内存。
utsns UTSNS 描述进程所属的命名空间的唯一 inode 编号。请参见 namespaces(7)。
uunit UUNIT 如果包含 systemd 支持,则显示进程所属的用户单元。
vsize VSZ 请参见 vsz。(别名 vsz)。
vsz VSZ 进程的虚拟内存大小,以 KiB(1024 字节单位)为单位。当前不包括设备映射;这可能会发生变化。(别名 vsize)。
wbytes WBYTES 此进程导致发送到存储层的字节数。
wcbytes WCBYTES 已取消写入的字节数。
wchan WCHAN 进程正在睡眠的内核函数名称。
wchars WCHARS 此任务已导致或将导致写入磁盘的字节数。
wops WOPS 写入 I/O 操作的数量——即 write(2) 和 pwrite(2) 等系统调用。
环境变量
以下环境变量可能会影响 ps:
COLUMNS
覆盖默认显示宽度。
LINES
覆盖默认显示高度。
PS_PERSONALITY
设置为 posix、old、linux、bsd、sun、digital 等之一(请参阅“个性”部分)。
CMD_ENV
设置为 posix、old、linux、bsd、sun、digital 等之一(请参阅“个性”部分)。
I_WANT_A_BROKEN_PS
强制使用过时的命令行解释器。
LC_TIME
日期格式。
LIBPROC_HIDE_KERNEL
将其设置为任何值,以隐藏通常使用 -e 选项显示的内核线程。 这等效于选择 --ppid 2 -p 2 --deselect。 同样适用于 BSD 模式。
PS_COLORS
当前不支持。
PS_FORMAT
默认输出格式覆盖。 您可以将其设置为与 -o 选项一起使用的格式字符串。 DefSysV 和 DefBSD 值尤其有用。
POSIXLY_CORRECT
不要为忽略不良“特性”寻找借口。
POSIX2
设置为“on”时,其行为与 POSIXLY_CORRECT 相同。
UNIX95
不要为忽略不良“特性”寻找借口。
_XPG
取消 CMD_ENV=irix 的非标准行为。
通常,设置这些变量不是一个好主意。 唯一的例外是 CMD_ENV 或 PS_PERSONALITY,可以设置为 Linux 以用于正常系统。 如果没有此设置,ps 将遵循 Unix98 标准中无用且糟糕的部分。
个性
390 类似于 OS/390 OpenEdition ps
aix 类似于 AIX ps
bsd 类似于 FreeBSD ps(完全不符合标准)
compaq 类似于 Digital Unix ps
debian 类似于旧的 Debian ps
digital 类似于 Tru64(以前是 Digital Unix,以前是 OSF/1)ps
gnu 类似于旧的 Debian ps
hp 类似于 HP-UX ps
hpux 类似于 HP-UX ps
irix 类似于 Irix ps
linux ***** 推荐 *****
old 类似于原始 Linux ps(完全不符合标准)
os390 类似于 OS/390 Open Edition ps
posix 标准
s390 类似于 OS/390 Open Edition ps
sco 类似于 SCO ps
sgi 类似于 Irix ps
solaris2 类似于 Solaris 2+(SunOS 5)ps
sunos4 类似于 SunOS 4(Solaris 1)ps(完全不符合标准)
svr4 标准
sysv 标准
tru64 类似于 Tru64(以前是 Digital Unix,以前是 OSF/1)ps
unix 标准
unix95 标准
unix98 标准
错误
bsdstart 和 start 字段只会以英文显示缩写的月份名称。 lstart 和 stime 字段将以配置的语言环境显示缩写的月份名称,但由于不同语言中缩写的月份和日期的长度不同,可能会超过列宽。
参见
pgrep(1), pstree(1), top(1), strftime(3), proc(5)。
标准
此 ps 符合以下标准:
1 单 Unix 规范版本 2
2 开放组技术标准基本规范,版本 6
3 IEEE Std 1003.1,2004 版
4 X/Open 系统接口扩展 [UP XSI]
5 ISO/IEC 9945:2003
作者
ps 最初由 Branko Lankester 编写。 Michael K. Johnson 对其进行了重大重写,使其使用 proc 文件系统,并在此过程中更改了一些内容。 Michael Shields 添加了 pid 列表功能。 Charles Blake 添加了多级排序、类似于 dirent 的库、设备名称到数字的内存映射数据库、直接在 System.map 上进行近似二进制搜索,以及许多代码和文档清理。 David Mossberger-Tang 编写了 psupdate 的通用 BFD 支持。 Albert Cahalan 重写了 ps,使其完全符合 Unix98 和 BSD 标准,并添加了一些针对过时和异构语法的难看补丁。
请将错误报告发送到 _。 不需要或建议订阅。