ps
和列出的流程有何区别ps -A
?
答案1
如果没有-A
,ps 将仅打印属于当前会话的进程。可以将其视为“绝对一切”。相关说明-a
执行相同的操作,但将其限制为会话所有者(用户名)。
答案2
GNUps
命令患有严重的多重人格障碍。因此,它的手册页令人困惑也就不足为奇了。也许看看 BSD 手册可能会有所帮助。毕竟,这个问题是标签unix。
ps
如果记住以下两点,BSD 的操作就会相当简单:
- 使用两个基本过滤器来选择要显示的进程。这些过滤器是在默认情况下,命令行选项会将它们离开. 朴素的质朴
ps
就这样通过两者过滤了。 - BSD 语法历史悠久。尽管现代 BSD 使用
getopt
以减号为前缀的选项惯例,但此处相关的选项和行为与 30 年前大致相同。
这个行为是这样的:
-a
(历史上的a
)选择关掉所有“选择器”过滤。- 其他各种命令行选项指定选择器:
-U
按 UID 选择、-t
按控制终端名称选择、-p
按进程 ID 选择等等。所有这些都被 绕过-a
。 - 如果没有明确提供选择器,默认选择器是仅显示与调用 的用户具有相同有效 UID 的进程
ps
。此默认选择器是此选项关闭的历史过滤器。
- 其他各种命令行选项指定选择器:
-x
(历史上的x
)选择关掉ps
仅显示具有控制终端的进程的限制。
从历史上看,BSDps
没有这个A
选项。但现代 BSD 实现了一个-A
选项,也可以用作A
,以便与(后来的)单一 UNIX 规范(在一定程度上)兼容。 与同时使用和-A
完全一样:它会关闭两个限制,只留下一个限制,所有进程均不经过过滤。-a
-x
OpenBSD 和 NetBSD 记录了该-A
选项,在 NetBSD 的情况下明确为-a -x
。FreeBSD 没有,但源代码中的注释指出它是一个故意未记录的 SUSv5 兼容性选项。