kill -9 是终止进程的最后手段。什么是第一手段?

kill -9 is the last resort when killing a process. What is the first resort?

前言

我问这个问题是因为它属于提问的 Coding Techniques 方面。

背景

有一段时间,每当我不知道如何终止进程时,我都会默认使用 kill -9。但是,有人告诉我这是不得已的选择,因为根据信号规范不能忽略 -9:

‘KILL’

  1. Kill (cannot be caught or ignored).

尝试过的方法

以前我也尝试过以下方法

  1. Ctrl-C(或 SIGINT 信号)。
  2. Ctrl-Z(或者SIGTSTP signal), followed by a ps -ef | grep 用户名,然后kill -9 进程。

问题

从编码技术的角度来看,杀死进程的首选方法是什么?

kill -TERM 告诉进程自行终止。大多数应用程序都有一个处理程序来检测此问题并会正确清理自己,因此下一个 运行 不会处理前一个 运行 的工件。这也映射到 UNIX/Linux 系统上的 15。

您还可以使用 SIGQUIT,它可以通过按 Ctrl + \ 发送。这还会生成一个核心转储,可以对其进行分析。

SIGQUIT 映射到信号编号 3。因此它与 kill -3 pid 相同。