允许通过正则表达式元字符过滤器过滤进程的命令是什么?
例如,如果我想过滤掉所有以字母A
或开头的进程a
,我该如何[Aa]$
在总体命令中实现?
答案1
命令是pgrep
。
A
要查找以或开头的所有进程a
,仅 PID:
pgrep '^[Aa]'
您可以使用任何 ERE(扩展正则表达式)模式。
要获取进程名称,请使用-l
:
pgrep -l '^[Aa]'
要获取完整的命令行,请使用-a
:
pgrep -a '^[Aa]'
您还可以使用该选项将模式与完整命令行进行匹配-f
。
查看man pgrep
。
需要注意的是,您的正则表达式模式是错误的,正则表达式标记$
匹配行尾,而不是行^
首。因此,您的模式将匹配任何以或结尾的[Aa]$
进程名称(或完整命令行,如果-f
使用) 。A
a
也不要使用:
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'