Kill 与 Killall - 区别和命令用法 - Linux 进程管理
本文将讨论kill 与killall 命令之间的区别。终止 Linux 上的进程是管理员和用户必须了解的重要知识。在某些时候,您会遇到挂起并冻结的应用程序或服务,您需要终止该进程才能退出它。
Linux 命令行为我们提供了几种不同的方式来终止进程。使用多种工具来完成这项工作(这在 Linux 上很常见)很方便,但会造成一些混乱,因为它们都有一些功能重叠。
在本教程中,我们将解释 Linux 上的 kill
和 killall
命令之间的区别。您还将看到如何使用每个命令的示例。
在本教程中您将学习:
kill
与killall
之间的区别如何使用
kill
和killall
命令终止进程使用
kill -9
和killall -9
命令
Kill 与 Killall – 有什么区别?
从名称中可以明显看出,kill
将终止一个进程,killall
可以同时终止多个进程。
理解差异的最佳方法是查看一些示例:
要终止 Linux 上的进程,请使用
kill
命令并指定您计划终止的进程 ID。$ kill 1234
killall
命令的工作方式略有不同,它接受要结束的进程的名称,并终止与您指定的名称匹配的所有进程。$ killall firefox
请注意,您仍然可以使用普通的
kill
命令一次结束多个进程,但您需要指定要终止的每个进程 ID。$ kill 1234 1233 1232
因此,有两个关键区别:
kill
接受进程 ID 号作为参数,并且一次仅终止一个进程(除非您在命令中指定多个进程 ID)killall
允许我们按名称杀死进程,并将结束具有匹配名称的所有进程
杀死-9 VS 杀死-9
默认情况下,kill
和 killall
将尝试尽可能优雅地停止进程。两者都会向指定进程发送 SIGTERM 信号,并指示该进程关闭。这是结束正在运行的进程的一种礼貌方式,并为应用程序或服务提供了首先完成工作的时间 - 例如完成对日志文件的写入,关闭由进程生成的打开的连接等。
唯一的问题是顽固的程序可能会忽略 SIGTERM 信号。这种情况尤其发生在冻结或“挂起”的进程中。 ” 但是,kill
和 killall
可用于向进程发送许多不同的信号,甚至可以使用 SIGKILL 强制最顽固的信号关闭 信号。
要使用 kill
或 killall
发送 SIGKILL 信号,您可以使用以下命令语法:
通过使用
kill
发送 SIGKILL 信号来强制关闭进程:$ kill -9 1234
通过使用
killall
发送 SIGKILL 信号来强制关闭一个或多个进程:$ killall -9 firefox
如果可能,您应该向您希望结束的进程发送普通的 SIGTERM 信号。使用 SIGKILL 信号立即终止服务每次都很有效,并且会立即得到结果,但可能会导致未来出现问题,因为进程没有机会正确关闭。
结束语
在本指南中,我们了解了 Linux 上的 kill
和 killall
命令之间的区别。我们还看到了使用每个信号向一个或多个进程发送 SIGTERM
或 SIGKILL
信号的示例。如需进一步阅读,请查看我们关于 pkill 命令的文章,该命令的工作方式与 killall
类似,但不需要精确的名称匹配。