SIGQUIT和SIGTERM一样吗?


14

我正在学习CentOS / RHEL,目前正在做一些有关流程管理的事情。

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

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

CentOS / RHEL使用的方法略有不同kill -15还是我只是被误认为了?

编辑:kill -l为SIGQUIT kill -3和似乎与使用键盘终止进程相关联。man 7 signal还指出SIGQUIT是kill -3,所以我只能假设我的书是错误的,因为它说明SIGQUIT是kill -15默认的。

Answers:


13

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


1
是的 我认为这本书是错误的,因为它还将SIGQUIT列为-15。Signal -15是结束Linux世界中某个进程的既定方法,毫无疑问,这是一种错误的打印方式。我会将您的答案标记为正确。感谢您扩展SIGQUIT的功能。
bitofagoob

1

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

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

正如@ilkkachu所说,SIGTERM不必担心,它可以在POSIX中使用。


技能手册上说,技能和sn俩已过时。我想知道为什么没有将它们从用户空间中删除?无论如何,有趣的信息。谢谢。
bitofagoob
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.