SIGQUIT 与 SIGTERM 相同吗?

SIGQUIT 与 SIGTERM 相同吗?

我正在学习 CentOS/RHEL,目前正在做一些有关进程管理的工作。

我正在阅读的 RHCSA 书籍将运行描述kill 1234为发送 SIGQUIT。我一直认为不添加信号类型开关的kill命令应该默认为kill -15

SIGTERM 是kill -15SIGKILL kill -9,对吧?

CentOS/RHEL 是否使用了稍微不同的方法,kill -15或者我只是弄错了?

编辑:kill -l给出 SIGQUIT askill -3并且它似乎与使用键盘终止进程相关。man 7 signal还指出 SIGQUIT 是kill -3,所以我只能假设我的书在声明 SIGQUIT 是kill -15默认值方面是错误的。

答案1

不,它们不一样。两者的默认操作都是终止进程,但SIGQUIT也会转储核心。参见例如Linux 手册页signal(7)kill默认情况下发送 SIGTERM,所以我只能想象提到 SIGQUIT 是默认的确实只是一个错误。那默认为 POSIX,SIGTERM、SIGKILL 和 SIGQUIT 的数字也是如此。

答案2

有两种终止命令,一种在 procps 中,一种在 shell 中。两者都使用 SIGTERM 作为默认值。对于 procps Kill,命令帮助、手册页和kill源(最新master分支中的skill.c第724行)都说SIGTERM,很高兴知道它是一致的。

关于信号需要记住的一件事是,一旦您开始超越“通常的一堆”并使用与 x86 Linux 系统稍有不同的系统,您可能会发现信号不存在或者它们具有不同的编号。 procps(可能还有很多其他程序)在编译时烘焙数字(基本上无论包含文件有什么,寻找signum.h)。

正如 @ilkkachu 所说,SIGTERM 不需要担心,它在 POSIX 中。

相关内容