SIGQUIT 和 SIGTERM 一樣嗎?
我正在學習 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
預設值是錯誤的。
不,它們不一樣。兩者的預設操作是終止程序,但
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 中無需擔心。