ps 过滤器是否可以与 AND 逻辑(而不是 OR 逻辑)组合

ps 过滤器是否可以与 AND 逻辑(而不是 OR 逻辑)组合

ps 命令可以单独使用来过滤结果子集而不是创建超集吗?

例如,ps -C <command>给出所有<command>进程,并ps -u <user>给出属于的所有进程<user>。但是ps -C <command> -u <user>给出所有名为的进程<command> 或者所有属于的进程<user>,而我真正想要的是所有名为的进程<command> 属于 的所有进程<user>

显然我可以使用 grep 进行过滤,但我想知道我所追求的目标是否可以用 ps 单独实现。

我使用-Cand-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),所以如果您对负面匹配更感兴趣,您也许可以想出一些东西,但否则这会太笨重了。)

相关内容