按名称过滤进程的命令?

按名称过滤进程的命令?

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

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

答案1

命令是pgrep

A要查找以或开头的所有进程a,仅 PID:

pgrep '^[Aa]'

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

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

pgrep -l '^[Aa]'

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

pgrep -a '^[Aa]'

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

查看man pgrep


需要注意的是,您的正则表达式模式是错误的,正则表达式标记$匹配行尾,而不是行^首。因此,您的模式将匹配任何以或结尾的[Aa]$进程名称(或完整命令行,如果-f使用) 。Aa


也不要使用:

ps -ef | grep ...

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

答案2

ps ax| grep name_of_processes 

例如:

$ ps ax |grep python

1393 pts/2    S+     0:00 grep --color=auto python
1713 ?        S      0:00 /usr/bin/python3 /usr/bin/mintupdate-launcher
1727 ?        Sl     0:01 /usr/bin/python3        /usr/lib/linuxmint/mintUpdate/mintUpdate.py

这是我习惯的最快的方法,如果您愿意的话,您可以看到要终止的进程数。

在您的情况下,为了消除 grep 过程,您可以使用括号作为模式的一部分:

ps -ef | grep '[t]ty'

相关内容