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

假设我想杀死包含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这样的东西时ls

使用pgrep

 kill -9 $(pgrep amarok) 

安全的方法是:

 pkill -f amarok 

我觉得这个命令killall正是你所需要的。 该命令被描述为“按名称杀死进程”。它很容易使用

 killall chrome 

这个命令将会终止Chrome的所有进程。这里是关于killall命令的链接

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

希望这个命令可以帮助你。

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

 pkill -x amarok 

pkill -f是相似的,但允许正则expression式模式。

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

我希望-x是默认行为!

如果你想执行一个命令的输出,你可以把它放在$(...) ,但是对于你的特定任务来看看killallpkill命令。

你也可以把你的输出作为一个子过程来评估,把所有的东西用back ticks或放在$()里面:

 `ps aux | grep -ie amarok | awk '{print "kill -9 " $2}'` $(ps aux | grep -ie amarok | awk '{print "kill -9 " $2}') 

尝试杀死-s 9 ps -ef |grep "Nov 11" |grep -v grep | awk '{print $2}' 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}' ps -ef |grep amarok|grep -v grep | awk '{print $2}'杀死包含amarok这个词的进程

也许添加命令到可执行文件,设置+ x权限,然后执行?

 ps aux | grep -ie amarok | awk '{print "kill -9 " $2}' > pk;chmod +x pk;./pk;rm pk