ps 命令可以单独使用来过滤结果子集而不是创建超集吗?
例如,ps -C <command>
给出所有<command>
进程,并ps -u <user>
给出属于的所有进程<user>
。但是ps -C <command> -u <user>
给出所有名为的进程<command>
或者所有属于的进程<user>
,而我真正想要的是所有名为的进程<command>
和属于 的所有进程<user>
。
显然我可以使用 grep 进行过滤,但我想知道我所追求的目标是否可以用 ps 单独实现。
我使用-C
and-u
作为示例,但实际上我想要一种更通用的方法,将任何 ps 过滤器与“and”而不是“or”结合起来。
答案1
否;这已记录在手册页:
除下文所述外,进程选择选项是附加的。默认选择将被丢弃,然后将选定的进程添加到要显示的进程集中。因此,如果进程满足任何给定的选择标准,则将显示该进程。
例外情况:
--deselect
Select all processes except those that fulfill the specified
conditions (negates the selection). Identical to -N
...
-N Select all processes except those that fulfill the specified
conditions (negates the selection). Identical to --deselect.
(当然,NOT(A OR B)=(NOT A)AND(NOT B),所以如果您对负面匹配更感兴趣,您也许可以想出一些东西,但否则这会太笨重了。)