我想杀死所有我通过的进程:

ps aux | grep my_pattern

怎么做?

这不起作用:

pkill my_pattern

当前回答

这是一种方式:

kill -9 $(pgrep -d' ' -f chrome)

pgrep搜索与chrome相关的所有进程,并在一个用空格分隔的列表中返回它们。

这将传递给kill应用程序,该应用程序可以安全地终止所有相关的chrome进程。

这仍然很危险,小心。

其他回答

如果你认为pkill-f模式有点太危险,我编写了一个bash脚本,提示你在那些与你想要杀死的模式匹配的进程中选择哪个进程。

警告:不再维护此项目。

找到了对不支持pkill的服务器执行此操作的最佳方法

kill -9 $(ps ax | grep My_pattern| fgrep -v grep | awk '{ print $1 }')

你不必循环。

可以使用以下命令:

ps -ef | grep -i myprocess | awk {'print $2'} | xargs kill -9

or

ps -aux | grep -i myprocess | awk {'print $2'} | xargs kill -9

这对我有用。

最好和最安全的做法是将pgrep-f与kill一起使用,或者只使用pkill-f,greping ps的输出可能会出错。

与使用ps|grep(需要通过添加|grep-v或使用模式技巧来过滤掉grep行)不同,pgrep只是不会自行设计。

此外,如果你的模式出现在ps的UID/USER、SDATE/START或任何其他列中,你会在输出中得到不需要的进程并杀死它们,pgrep+pkill不会受到这个缺陷的影响。

我还发现killall-r/-regexp不能与正则表达式一起使用。

pkill-f“^python3路径/to/my_script$”

男子pkill

使用pkill-f,它匹配命令行任何部分的模式

pkill -f my_pattern

万一它不起作用,也尝试使用这个:

pkill -9 -f my_pattern