使用killall和pkill按名称终止进程
killall 和 kill 有什么区别?
有两个关键区别。
首先,killall接受进程名作为参数,而不是PID。
另一个区别是,正如名称所示,killall将杀死命名进程的所有实例。与此相反,常规的'kill'命令只结束您显式指定的进程。
与pkill不同,killall要求您指定进程的确切名称。
让我们看一些例子,看看它是如何工作的,只需一个命令就可以杀死同一个bash脚本的几个实例。
$killall example.sh
在这种情况下,用一个命令杀死所有这些进程肯定比用“kill”指定每个PID容易得多。但是,killall
不区分并针对示例中脚本的所有实例。比如说,如果我们只想杀死其中的两个,那么我们仍然必须使用“kill”命令。
我们可以使用的另一个命令是'pkill'。这与“killall”不同,它不要求我们指定进程的确切名称。因此,使用前面的示例,我们可以使用如下命令杀死'example.sh'的所有三个进程:
$pkill examp
正如您可以想象的那样,您应该在使用'pkill'命令时非常小心,因为您可以很容易地杀死一个您不想杀死的进程。例如,如果我们运行另一个脚本'example2.sh',前面的命令也会终止它。有时这可能是一件好事,但请注意,模式匹配有时会扩展到比您意识到的更多的进程。您可以随时使用'pgrep'命令预览'pkill'将终止多少进程。
$pgrep example 17555 17557 17559
因此,“pkill example”将杀死三个过程。
请注意,killall
和pkill
命令将接受与常规kill
命令一样的大多数相同的选项。
例如,使用kill
指定的常见选项是-9
将sigkill信号发送到一个进程。
语法在其他两个命令上相同。
请参阅下面的示例。
$kill -9 1234 $killall -9 example.sh $pkill -9 example.sh
日期:2020-07-07 20:57:02 来源:oir作者:oir