根据man
命令页ps
,x
标志
解除 BSD 风格的“必须有 tty”限制,当使用某些 BSD 风格(不带“-”)选项或 ps 个性设置类似于 BSD 时,该限制会强加于所有进程集。以这种方式选择的进程集合是除了通过其他方式选择的进程集合之外的。另一种描述是,此选项使 ps 列出您拥有的所有进程(与 ps 相同的 EUID),或者与 a 选项一起使用时列出所有进程。
对于-a
标志:
-a 选择除会话领导者(请参阅 getsid(2))和不与终端关联的进程之外的所有进程。
在我的Ubunbtu 16.04
笔记本电脑中:
$ ps -a | wc -l
132
/etc/systemd/system
$ ps -x | wc -l
113
这是否意味着我有 132 个与终端关联的进程(并且不是会议领导者同时)?这是怎么回事,因为我只terminator
打开了一个实例(并且只有一个终端窗口运行一些命令)?
任何人都可以详细说明-x
和-a
标志之间的区别吗?
我们都知道要得到全部运行的进程我们需要将这两个结合起来,但它们的确切区别是什么?
答案1
Unix 风格和 BSD 风格选项之间似乎存在一些混淆。涉及a
和的选项x
有-a
(Unix-style)、a
(BSD-style)、x
(BSD-style);没有-x
。由于您使用了操作系统我将集中讨论ps
Linux 发行版上常见的实现。
默认情况下,ps
仅列出附加到当前终端的调用用户的进程。
a
解除“调用用户”限制:ps a
列出附加到终端的所有用户进程。x
解除“附加到终端”限制:ps x
列出所有调用用户的进程。ps ax
列出所有进程。
ps -a
列出附加到终端且不是会话领导者的所有用户进程。
ps -ax
相当于: BSD 风格的标志ps ax
的存在导致以 BSD 风格解释所有标志。同样,相当于.-x
ps
ps -x
ps x