根据名称执行 -9 终止的 Shell 脚本

根据名称执行 -9 终止的 Shell 脚本

有没有办法(可能是脚本)来自动化这个过程:

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选择kill

答案1

有一个比 qbi 更简单的解决方案:killall让您按名称终止进程,并且可以指定信号。

killall -9 middleman

man killall以获取更多信息和额外选项(有很多)。

顾名思义,这确实会向全部名为 的进程middleman。但这与其他方式(如 )并没有什么不同pkill。此外,pkill -9 middleman还将针对名称匹配但不等于 的进程middleman,例如middleman2

答案2

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

kill -9 $(pidof middleman)

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

答案3

其他答案完全正确,但我不妨添加第三个选项,以便所有答案都记录在这里。您还可以使用:

pkill -9 middleman

请参阅man pkill以了解更多信息和额外选项。

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

答案4

pkill -9 -f middleman

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

请注意,这-9应该是最后手段信号,而不是常规使用的信号。

相关内容