Shell脚本根据名称杀死-9


28

有没有办法(也许是脚本)如何自动执行此过程:

petr@sova:~$ ps -ef | grep middleman
petr     18445  2312  1 12:06 pts/2    00:00:01 /home/petr/.rvm/gems/ruby-1.9.3-p362/bin/middleman                                                                  
petr     18581 13621  0 12:08 pts/0    00:00:00 grep --color=auto middleman
petr@sova:~$ kill -9 18445

不幸的是,pkill它太弱了,因为我必须-9选择on kill


2
你可以用-9pkill太...
停止汉宁波莫妮卡

6
我认为,它-KILL比更加优雅和合适-9。什么数字对应什么信号取决于实现。SIGKILL碰巧是9在Linux i386和Linux amd64上,但不一定到处都是。(更多信息在这里。
Eliah Kagan

5
@EliahKagan:尽管我也喜欢使用-KILL它(因为它使代码更具可读性),但应注意,它SIGKILL = 9由POSIX指定的,因此-9如今非常易于移植(并且不依赖于内核或体系结构)。
Andrea Corbellini 2013年

Answers:


36

您可以使用Shell为您完成此任务:

kill -9 $(pidof middleman)

外壳程序pidof middleman首先执行命令。pidof(8)的输出是进程ID。因此,shell将pidof-command替换为进程ID并执行kill -9 18845(或执行任何正确的进程ID)。


和之间有什么区别kill -9 $(pgrep middleman)
亚伦·弗兰克

54

有一种比qbi更为简单的解决方案:killall让我们按名称杀死进程,并可以指定信号。

killall -9 middleman

请参阅参考资料,man killall以获取更多信息和更多选项(有很多)。

顾名思义,这确实将信号发送到名为的所有进程middleman。但这与其他方式(例如pkill)没有什么不同。此外,pkill -9 middleman还将定位名称匹配但不相等的进程middleman,例如middleman2


2
killall为了胜利!
Andrea Corbellini 2013年

4
杀死所有中间人?哦,亲爱的...
Tobias Kienzler 2013年

16

其他答案是完全正确的,但我不妨添加第三个选项,所有内容均在此处记录。您还可以使用:

pkill -9 middleman

请参阅man pkill以获取更多信息和其他选项。

使用哪种方法并不重要。他们都会工作。但是,如果要以某种方式修改行为,则知道这些选项是否有用,因为相应的手册页会显示其他可用的匹配选项。


奇怪,在这里不起作用。也没有middleman*
-mreq

1
啊。仔细观察,您似乎想杀死一个红宝石解释器,而不是真正的过程middleman。这是如何完全不同pkillkillallpidofgrep比赛的过程真正开始没关系!
罗比·巴萨克

12
pkill -9 -f middleman

-f选项使它与完整的命令行匹配,而不是仅与进程名称匹配。

请注意,这-9应该是不得已的信号,而不是常规使用的信号。


1
谢谢!我真的很喜欢与complete command line
cwd 2014年

完整的命令行真的很棒!
okwap 2015年

10

只是为了好玩,我想添加一种更手动的旧式方式

kill -9 `ps aux | grep middleman | awk '{print $2}'`

1
几年前,我在工作中做到了这一点,管理员给了我一个表情,说“好吧,爷爷”。也可以在awk之前添加grep -v grep,以确保它也不会杀死grep命令。
伊恩·霍尔德

@gerhard,感谢您的编辑,在我的iPad上找不到回音。grep -v是个好主意...
slipset 2013年

真正的老派方式是写作,... grep [m]iddleman ...以避免grep意外杀死进程。这样,由于有趣的引用,grep无法匹配自己。
Mikko Rantalainen '16

1
killall -9 -ir regex_pattern

这是交互式(安全)且与部分命令名称匹配。

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.