我正在学习 CentOS/RHEL,目前正在做一些有关进程管理的工作。
我正在阅读的 RHCSA 书籍将运行描述kill 1234
为发送 SIGQUIT。我一直认为不添加信号类型开关的kill命令应该默认为kill -15
SIGTERM 是kill -15
SIGKILL 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 中。