kill#

kill 是包含在 procps-ng 內的行程訊號傳送工具

kill 是 Linux 系統中用於向特定行程 (Process) 發送訊號 (Signal) 的工具。雖然其名稱為 “kill”,但它並不只是用來終止行程,而是透過傳送不同的訊號與行程進行溝通。預設情況下,kill 會發送 SIGTERM (15) 訊號,請求行程安全地自行結束;若行程無回應,則可使用 SIGKILL (9) 強制終止。

Install#

$ sudo apt install procps

Setting in up#


Operate#

kill [options] [pid] […]

參數範例指令說明
-lkill -l列出所有可用的訊號名稱與對應編號(如 9 為 SIGKILL)。
-9sudo kill -9 1234強制終止。發送 SIGKILL 訊號,立即結束行程 1234。
-15kill -15 1234正常終止。發送 SIGTERM 訊號(預設值),讓程式安全結束。
-u [user]pkill -u root傳送訊號給特定使用者(如 root)擁有的所有行程。
-Lkill -L以表格形式列出訊號名稱(依發行版而定)。
訊號編號訊號名稱詳細解釋
1SIGHUP掛斷。通常用於叫程式重新讀取設定檔 (Reload)。
2SIGINT中斷。等同於 Ctrl + C,請求程式停止執行。
3SIGQUIT退出。與 SIGINT 類似,但會產生 Core Dump 用於除錯。
4SIGILL非法指令。程式嘗試執行 CPU 無法識別的指令。
5SIGTRAP追蹤陷阱。由除錯器 (Debugger) 使用的斷點訊號。
6SIGABRT中止。程式發生嚴重錯誤(例如斷言失敗)時主動發出。
7SIGBUS匯流排錯誤。存取非法記憶體位址(硬體層級錯誤)。
8SIGFPE算術錯誤。例如「除以 0」或溢位運算。
9SIGKILL強制殺掉。核心直接終止行程,無法被捕捉或忽略。
10SIGUSR1使用者自定義訊號 1。由應用程式自行決定功能。
11SIGSEGV區段錯誤 (Segmentation Fault)。嘗試存取不合法的記憶體。
12SIGUSR2使用者自定義訊號 2。由應用程式自行決定功能。
13SIGPIPE破裂管道。嘗試寫入一個已經關閉的 Pipe 時觸發。
14SIGALRM鬧鐘訊號。當設定的計時器 (alarm) 到期時由核心發送。
15SIGTERM終止(預設)。請求程式正常關閉,給予清理資源的時間。
16SIGSTKFLT協處理器堆疊錯誤(現代 Linux 較少見)。
17SIGCHLD子行程結束。當子行程終止時,父行程會收到此訊號以回收資源。
18SIGCONT繼續執行。讓先前被暫停(STOP)的行程恢復運作。
19SIGSTOP暫停執行。核心直接暫停行程,無法被捕捉或忽略。
20SIGTSTP終端暫停。等同於 Ctrl + Z,請求程式暫停運作。
21SIGTTIN背景行程嘗試從終端機讀取資料時觸發。
22SIGTTOU背景行程嘗試向終端機寫入資料時觸發。
23SIGURG緊急資料。當 Socket 收到緊急頻外資料 (OOB) 時發送。
24SIGXCPU超過 CPU 時間限制。行程佔用運算資源過久時發出。
25SIGXFSZ超過檔案大小限制。行程寫入的檔案超過系統上限。
26SIGVTALRM虛擬計時器鬧鐘。計算行程在使用者模式下消耗的時間。
27SIGPROF分析計時器。包含行程在使用者與核心模式下的時間。
28SIGWINCH視窗大小改變。當終端機視窗大小 (Rows/Cols) 調整時發送。
29SIGIO非同步 I/O。當檔案描述符準備好進行讀寫時觸發。
30SIGPWR電源故障。通常由 UPS 等電源管理程式發送。
31SIGSYS非法系統調用。程式嘗試呼叫一個不存在的系統指令。
34-64SIGRT即時訊號 (Real-time Signals)。由應用程式自定義使用的訊號範圍。

Reference#

Official docs: