说我要杀死包含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
答案 0 :(得分:361)
来自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
答案 1 :(得分:187)
ps aux | grep -ie amarok | awk '{print $2}' | xargs kill -9
xargs(1):xargs - 构造参数列表和执行实用程序。想要将参数输入到kill
或ls
等内容时很有用。
答案 2 :(得分:45)
使用pgrep
kill -9 $(pgrep amarok)
答案 3 :(得分:25)
安全的方法是:
pkill -f amarok
答案 4 :(得分:17)
我认为这个命令killall正是你所需要的。 该命令被描述为“按名称杀死进程”。它易于使用。例如
killall chrome
此命令将终止Chrome的所有进程。这是一个关于killall命令的链接
http://linux.about.com/library/cmd/blcmdl1_killall.htm
希望这个命令可以帮到你。
答案 5 :(得分:11)
pkill -x完全匹配进程名称。
pkill -x amarok
pkill -f类似但允许使用正则表达式。
请注意,没有其他参数的pkill(例如-x,-f)将允许对进程名称进行部分匹配。所以" pkill amarok"会杀死amarok,amarokBanana,bananaamarok等。
我希望-x是默认行为!
答案 6 :(得分:4)
如果要执行命令的输出,可以将其放在$(...)
内,但是对于您的特定任务,请查看killall
和pkill
命令。
答案 7 :(得分:3)
您还可以将输出作为子流程进行评估,将所有内容包含在后面的刻度中或将其放在$()中:
`ps aux | grep -ie amarok | awk '{print "kill -9 " $2}'`
$(ps aux | grep -ie amarok | awk '{print "kill -9 " $2}')
答案 8 :(得分:3)
尝试 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
答案 9 :(得分:0)
可能将命令添加到可执行文件,设置+ x权限然后执行?
ps aux | grep -ie amarok | awk '{print "kill -9 " $2}' > pk;chmod +x pk;./pk;rm pk
答案 10 :(得分:0)
如果你正在使用cygwin或一些缺少killall
的小shell,你可以使用这个脚本:
#/bin/bash
ps -W | grep "$1" | awk '{print $1}' | xargs kill -f;
$ killall <process name>