什么是Linux SIGTERM信号和SIGKILL的区别

类Unix和Linux的操作系统进程使用信号来相互通信。例如,如果我们可以终止一个进程,我们需要向我们想要终止的进程发送一个信号。此信号将由SIGTERM发送 kill 或类似命令。在本教程中,我们将检查SIGTERM信号并与SIGKILL信号进行比较。

null

Linux Kill进程教程及示例

SIGTERM公司

SIGTERM信号是用于终止程序的通用信号。SIGTERM提供了一种终止程序的优雅方法。这很有用,因为SIGTERM可以用不同的方法处理,比如阻塞、忽略等。这是终止应用程序或程序的礼貌方法。kill命令的默认行为是向进程发送SIGTERM信号。

向进程发送SIGTERM信号

如前所述,我们可以通过简单地使用 kill 具有进程ID或简单PID的命令。首先,我们需要用pgrep命令获取进程ID,如下所示。在这个例子中,我们想要终止Firefox进程。

$ pgrep firefox

图片[1]-什么是Linux SIGTERM信号和SIGKILL的区别-yiteyi-C++库

我们将使用 kill 在本例中,进程ID为2229的命令默认行为。

$ kill 2229

向根用户或其他用户进程发送SIGTERM信号

在某些情况下,我们可能需要发送SIGTERM信号到 root 或其他用户进程。我们可以用 sudo 在其他命令中获取 root 特权,使我们有能力杀死Linux系统中的所有进程。

$ sudo kill 2229

SIGTERM vs SIGKILL

SIGTERM和SIGKILL提供了类似的功能。两者都杀死给定的进程或程序。但也有一些小分歧。

  • SIGTERM试图礼貌地杀死另一边SIGKILL会以粗暴的方式杀死
  • SIGTERM可以处理,但是SIGKILL不能处理
  • SIGTERM是第一种终止进程的方法,但它不起作用。可以使用SIGKILL。

相关文章: Linux下如何强制用户注销?

向进程发送SIGKILL信号

如果SIGTERM不能像我们期望的那样工作,我们可以使用SIGKILL这种严酷的方式。我们可以用 kill 命令 -9 指定SIGKILL信号的选项。

$ kill -9 2220
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享