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

Pue*_*Pop 240 shell command-line kill

假设我想杀死包含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
Run Code Online (Sandbox Code Playgroud)

Tim*_*awa 395

man 1 pkill

-f     The pattern is normally only matched against the process name.
       When -f is set, the full command line is used.
Run Code Online (Sandbox Code Playgroud)

这意味着,例如,如果我们看到这些行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
Run Code Online (Sandbox Code Playgroud)

我们可以使用pkill -f选项将它们全部杀掉:

pkill -f httpd
Run Code Online (Sandbox Code Playgroud)

  • 为了获得额外的力量,最后添加`-9`! (17认同)
  • 我意识到这并没有解决这个问题的主题,但它确实展示了一种替代的、更短的方法来做你想做的事情。 (2认同)

Nek*_*ios 191

ps aux | grep -ie amarok | awk '{print $2}' | xargs kill -9 
Run Code Online (Sandbox Code Playgroud)

xargs(1):xargs - 构造参数列表和执行实用程序.想要将参数传递给类似kill或类似的东西时很有ls用.

  • 你还可以添加另一个grep调用来过滤掉grep(我觉得这更容易阅读/记住)`ps aux | grep -ie amarok | grep -v grep | awk'{print $ 2}'| xargs kill -9`(`grep -v`代表`grep --invert`) (7认同)
  • 避免捕获grep进程有一个小技巧:ps aux | grep -ie [a] marok | awk'{print $ 2}'| xargs kill -9 (5认同)
  • "杀人:没有这样的过程" (4认同)
  • 提到xargs的要点 - 所有这些pgrep/pkill都非常好,但xargs是一个通用工具,并且是每个linux/unix上的标准. (3认同)
  • Cerin,因为它试图杀死grep进程,已经完成了.应该没问题. (3认同)

Eri*_*tis 46

使用 pgrep

kill -9 $(pgrep amarok)
Run Code Online (Sandbox Code Playgroud)

  • 甚至是优雅者:`pkill -9 amarok` (26认同)
  • pkill 本地处理“包含单词 <word> 的每个进程”部分,而无需创建更多管道或进程。请参阅 -f 选项以进行完整的进程名称搜索以消除对 pgrep 的需要。 (2认同)
  • 我同意`pkill` (2认同)
  • 请注意,默认情况下,pkill允许对进程名称进行部分匹配.如果它存在,这个命令也会杀死amarok2.如果要指定确切的名称,请使用-x或-f. (2认同)
  • 对于全名匹配,请使用 `kill -9 $(pgrep -f amarok)` (2认同)

Joh*_*tts 26

安全的方法是:

pkill -f amarok
Run Code Online (Sandbox Code Playgroud)

  • 为此,我添加了“-l”标志。实际上,我只是将“pkill”别名为“pkill -fl”,这样我就可以运行“pkill jboss”之类的东西,它会吐出刚刚杀死的进程。 (2认同)

and*_*yue 17

我认为这个命令killall正是你所需要的.该命令被描述为"按名称杀死进程".它易于使用.例如

killall chrome
Run Code Online (Sandbox Code Playgroud)

此命令将终止Chrome的所有进程.这是一个关于killall命令的链接

http://linux.about.com/library/cmd/blcmdl1_killall.htm

希望这个命令可以帮到你.


use*_*878 11

pkill -x完全匹配进程名称.

pkill -x amarok
Run Code Online (Sandbox Code Playgroud)

pkill -f类似但允许正则表达式模式.

请注意,没有其他参数的pkill(例如-x,-f)将允许对进程名称进行部分匹配.所以"pkill amarok"会杀死amarok,amarokBanana,bananaamarok等.

我希望-x是默认行为!


小智 6

尝试kill -s 9 `ps -ef |grep "Nov 11" |grep -v grep | awk '{print $2}'` 杀死 11 月 11 日的进程或 kill -s 9 `ps -ef |grep amarok|grep -v grep | awk '{print $2}'` 杀死包含单词 amarok 的进程