Kill

SIGQUIT 和 SIGTERM 一樣嗎?

  • May 17, 2017

我正在學習 CentOS/RHEL,目前正在做一些有關程序管理的工作。

我正在閱讀的 RHCSA 書將執行描述kill 1234為發送 SIGQUIT。我一直認為不添加信號類型開關的 kill 命令應該預設為kill -15

SIGTERMkill -15和 SIGKILL 是kill -9,對嗎?

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

編輯:kill -l給出 SIGQUIT askill -3並且它似乎與使用鍵盤終止程序有關。man 7 signal還指出 SIGQUIT 是kill -3,所以我只能假設我的書說 SIGQUIT 是kill -15預設值是錯誤的。

不,它們不一樣。兩者的預設操作是終止程序,但SIGQUIT也會轉儲核心。參見例如Linux 手冊頁signal(7)kill預設情況下發送 SIGTERM,所以我只能想像提到 SIGQUIT 是預設的確實只是一個錯誤。該預設值在 POSIX中,SIGTERM、SIGKILL 和 SIGQUIT 的數字也是如此。

有兩個 kill 命令,一個在 procps 中,一個在 shell 中。兩者都使用 SIGTERM 作為預設值。對於 procps kill,命令幫助、手冊頁和 kill 源(最新 master 分支中的技能.c 行 724)都說 SIGTERM,很高興知道它是一致的。

關於信號要記住的一件事是,一旦您開始超越“通常的一堆”並使用與 x86 Linux 系統稍有不同的系統,您可能會發現信號不存在或者它們具有不同的編號。procps(可能還有很多其他程序)在編譯時將數字烘焙(基本上是包含文件的任何內容,查找 signum.h)。

正如@ilkkachu 所說,SIGTERM 在 POSIX 中無需擔心。

引用自:https://unix.stackexchange.com/questions/365023