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