按名称过滤进程的命令?

Ano*_*ous 4 command-line regex process

允许通过正则表达式元字符过滤器过滤进程的命令是什么?

例如,如果我想过滤掉以字母Aor开头的所有进程a,我将如何[Aa]$在整体命令中实现?

hee*_*ayl 7

命令是pgrep.

查找所有以Aor开头的进程a,只有PID:

pgrep '^[Aa]'
Run Code Online (Sandbox Code Playgroud)

您可以使用任何 ERE(扩展正则表达式)模式。

要获取进程名称,请使用-l

pgrep -l '^[Aa]'
Run Code Online (Sandbox Code Playgroud)

要获得完整的命令行,请使用-a

pgrep -a '^[Aa]'
Run Code Online (Sandbox Code Playgroud)

您还可以使用该-f选项将模式与完整命令行进行匹配。

检查man pgrep


请注意,您的正则表达式模式是错误的,正则表达式标记$匹配行尾,而不是开始,^匹配开始。所以,你的模式,[Aa]$将匹配任何进程名(或者,如果完整的命令行-f使用时)Aa在年底。


也不要使用:

ps -ef | grep ...
Run Code Online (Sandbox Code Playgroud)

这是笨拙的,并且涉及不必要的额外进程的产生,以及pgrep可以轻松完成此操作的匿名管道,并且一次性也可以。此外pgrep(和它的兄弟pkill)是专门为此目的而设计的。