如何杀死给定名称的所有进程?


16

我运行命令ps -A | grep <application_name>并获取如下所示的进程列表:

19440 ?        00:00:11 <application_name>
21630 ?        00:00:00 <application_name>
22694 ?        00:00:00 <application_name>

我要杀死列表中的所有过程:194402163022694

我已经尝试过,ps -A | grep <application_name> | xargs kill -9 $1但是它有错误。

kill: illegal pid ?
kill: illegal pid 00:00:00
kill: illegal pid <application_name>

我该如何优雅地做到这一点?

Answers:



9

问题是这样ps -A | grep <application_name> | xargs -n1返回输出

19440
?
00:00:11
<application_name>
21630
?
00:00:00
<application_name>
22694
?
00:00:00
<application_name>

您可以首先使用输出awkps

ps -A | grep <application_name> | awk '{print $1}' | xargs -n1

将返回PID列表

19440
21630
22694

并添加kill -9 $1一个命令,该命令将杀死所有PID

ps -A | grep <application_name> | awk '{print $1}' | xargs kill -9 $1

这是完美的,我在bash脚本上对其进行了测试,它可以立即杀死进程,并且没有错误+即使进程没有启动,它也没有显示出我想要的错误,这里是ffmpeg进程杀手的示例nano /usr/bin/ffmpegk 。。。。 ps -A | grep ffmpeg | awk '{print $1}' | xargs kill -9 $1 。。。。 chmod a+rx /usr/bin/ffmpegk
塞勒姆F

我对此有问题,kill -9如果没有进程匹配,我会得到输出
Daniel F

1
而不是grep,您应该使用awk匹配的名称:ps -A | awk "\$4 == \"$1\" { print \$1; }"
Toby Speight

0

killall 可以做到的。

$ killall application_name

杀所有允许在应用程序名称中使用正则表达式吗?
卢卡斯D. Tulikowski

killall --regexp "appl.*me"尽管可能会有不同的killall实现。请参阅man killall
rudimeier '16

killall不够有时我需要发送3次来杀死这个进程,甚至无法杀死它,kill -9 pid我认为唯一快速工作的解决方案是 @ŁukaszD.Tulikowski是专门用于bash脚本的最佳工作解决方案。
塞勒姆F

-1
ps -eaf | grep -i applicationname| grep -iv 'grep'| awk '{print "kill -9" " "  $2}'|sh

尽管我尚未对该问题进行表决,但是您尚未描述为什么这与其他解决方案不同或更好(与之非常相似),也没有描述OP为什么在其变化方面遇到麻烦。
杰夫·谢勒

-2

我的方法类似于@ Łukasz D. Tulikowski。代替使用grep <application_name>; 我使用了grep "[a]pplication_name",它与自己的进程命令行不匹配。

方括号表达式是grep字符类模式匹配的一部分。(参考)


您可以先使用awk一列ps输出。

ps -A | grep "[a]pplication_na" | awk '{print $2}' | xargs -n1

将返回PID列表

7644
407
406

稍后添加kill -9 $1您将杀死所有PID的命令

ps aux | grep "[a]pplication_na" | awk '{print $2}' | xargs kill -9 $1

为什么用grep代替而不是awk更正确地进行测试? grep例如,将匹配包含目标作为子字符串的名称。
Toby Speight
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.