如何杀死所有匹配名称的进程?

假设我想杀死包含amarok这个词的每个进程。 我可以打印出我想要执行的命令。 但是我怎么才能让shell执行它们。 即。

ps aux | grep -ie amarok | awk '{print "kill -9 " $2}'
Output:
kill -9 3052
kill -9 3071
kill -9 3076
kill -9 3077
kill -9 3079
kill -9 3080
kill -9 3082
kill -9 3083
kill -9 3084
kill -9 3085
kill -9 3086
kill -9 3087
kill -9 3088
kill -9 3089
kill -9 4031

man 1 pkill

-f     The pattern is normally only matched against the process name.
       When -f is set, the full command line is used.

这意味着,例如,如果我们在ps aux看到这些行:

apache   24268  0.0  2.6 388152 27116 ?        S    Jun13   0:10 /usr/sbin/httpd
apache   24272  0.0  2.6 387944 27104 ?        S    Jun13   0:09 /usr/sbin/httpd
apache   24319  0.0  2.6 387884 27316 ?        S    Jun15   0:04 /usr/sbin/httpd

我们可以使用pkill -f选项杀死它们:

pkill -f httpd

ps aux | grep -ie amarok | awk '{print $2}' | xargs kill -9 

xargs(1):xargs - 构造参数列表并执行实用程序。 当你想将参数传递给诸如killls类的东西时很有用。


使用pgrep

kill -9 $(pgrep amarok)
链接地址: http://www.djcxy.com/p/46407.html

上一篇: How to kill all processes matching a name?

下一篇: Cannot pass an argument to python with "#!/usr/bin/env python"