Kill(命令)
佇電腦運算中,` kill `是一个真濟種流行業系統上攏看會著的命令,會當向執行的行程傳送的訊號,以請求行程終止。
實現
Unix 佮類 Unix
佇咧 Unix 佮類 Unix 作業系統當中,` kill ` 是用佇咧向行程傳送訊號的命令。預設傳送的訊息是終止訊號,會要求該行程登出。猶毋過 _ kill _(刣)可能會引起誤解,傳送的訊號可能佮行程刣死無關。` kill ` 命令是一个包裝矣` kill ( ) `系統呼叫的包裝函式,該系統呼叫照行程 ID(PID)抑是行程群組 ID(PGID)數,向系統上的行程抑是行程群組傳送訊號。POSIX 標準規定 ` kill ` 應該號做獨立工具提供。毋過,大部份 shell 攏內起矣 ` kill ` 的命令,用法可能佮標準略無仝。
會當傳送足濟種無仝的訊號(參見訊號中的完整列表), 一般使用者是上蓋有興趣的是 SIGTERM 和 SIGKILL。預設傳送的訊號是 SIGTERM。處理這个訊號的程式佇咧登出進前會當做一寡有路用的清理來操作(如儲存組態資訊到檔案中)。 毋過,真濟程式並無專門咧處理這訊號的處理程式,所以會呼叫預設的訊號處理常式。若其他的情形下,有特殊處理程式的程式嘛會脫箠,毋過無法度確處理訊號。
除 SIGKILL 和 SIGSTOP 以外的所有訊號會當為行程所「截獲」,這意味對程式有咧接收著遮的訊號的時陣,會當呼叫特殊函式。兩个例外 SIGKILL 和 SIGSTOP 干焦會當由主機系統核心處理,由其負責提供會當靠的控制行程執行的方法。SIGKILL 刣死行程,而且 SIGSTOP 可暫停伊,一直到 SIGCONT。
UNIX 提供了安全機制,以防止無授權使用者殺死其他的行程。實質上,如果走程要向另一個行程傳送訊號,發信行程的所有的人著愛佮收信行程的所有的人仝款,抑是有夠使用者。
會當用訊號有著無仝款的名稱,而且對映著特定的數字。注意佇無仝款的 Unix 實現中,數字佮訊號之間的對映關係會當無仝。SIGTERM 往往為十五,而且 SIGKILL 通常編做九。
範例
會當過下四个方式傳送 SIGTERM 訊號(範例行程 ID 為「一千兩百三十四」):
會當過三種方式傳送 SIGKILL 訊號:
其他有用的訊號包括 HUP、TRAP、INT、SEGV 佮 ALRM。HUP 傳送 SIGHUP 訊號。一寡守護程式,包括講 Apache 和 Sendmail 的,咧接收著 SIGHUP 時重新讀取設定檔,所以會當用 kill 命令執行這个功能。佇大多數 Unix 外殼中,干焦需要揤落來 ` CTRL ` + ` C ` 便會當產生 SIGINT 訊號。` CTRL ` + ` Z ` 嘛定定對映至講 SIGTSTP,` CTRL ` + ` \ `(反斜槓)嘿映至 SIGQUIT,這會強制程式進行核心轉儲。
相關程式
- killall-一寡仔 Unix 反種如 Solaris,佇關機時會自動呼叫該實用程式。伊的功能類似頂懸的 kill 命令,但是毋是向單一个行程傳送的訊號,是傳送到系統中的所有行程。毋過佇咧其他的作業系統內底,如 IRIX、Linux 佮 FreeBSD,允准通過參數指定欲刣死的行程名稱。比如講,為著欲刣死一个行程,如 XMMS 音樂放送器呼叫的一个 ` xmms ` 實例,使用者會當執行命令 ` killall xmms `。這將刣死所有的名為 ` xmms ` 的行程,佇咧 Solaris 系統上等仝款 ` ` kill ` pidof xmms ` ` `。
- pkill-根據名稱佮其他屬性向行程傳送訊號。伊上早出現佇咧 Solaris 七中,了後閣重新為 Linux、NetBSD 佮 OpenBSD 實現。pkill 予名稱刣死行程閣較方便:如,欲刣死名做 _ firefox _ 的行程,阮若無使用 pkill(佮 pgrep), 著愛鍵入 ` ` kill ` ps --no-headers-C firefox-o pid ` ` `,喔有 pkill,只需要 ` pkill firefox `。
- xkill-若無𤆬任何參數呼叫,滑鼠游標共對箭頭變做「x」圖示,使用者會當單擊一个窗仔口,強制 X 侍服器關起來佮該窗仔口客戶捀的連接。這往往會致使行程佇檢測著伊佮 X 侍服器的連接已經關起來了後。
Microsoft Windows
佇咧微軟的命令列直譯器 Windows PowerShell 中,預定義的 ` kill ` 是一个 ` Stop-Process ` cmdlet 的號令別名。
Microsoft Windows XP、Vista 佮七中附帶矣 ` taskkill ` 命令以終止行程。定定看著用法為 ` taskkill / im " IMAGENAME " `。佇咧 Microsoft Windows 提供予 Windows 九十八資源工具包中有一个「直接受支援」的 ` kill ` 版本。
GNU 版的 ` kill ` 已經通過 Cygwin 徙栽,並會當執行佇咧 Microsoft Windows Services for UNIX 的 Unix 子環境中(微軟佇一九九九年九月十七號通過購買 Softway Systems 佮其 Interix 產品得著 Windows Services for UNIX)。
範例
走揣並刣死所有字母「P」一開頭、由微軟仔開發、使用記憶體超過十 MB 的行程:
下跤是一个簡單的例,伊要求 explorer . exe 行程終止:
強制終止的行程:
猶閣會使揤 PID 號殺死行程,如下所示:
Microsoft Singularity
微軟研究院的微核心作業系統 Singularity 的標準外殼 Singularity shell 包含用以終止後台行程的 ` kill ` 命令。
範例
停止名做「SampleProcess」的行程:
停止行程識別碼為「四十二」的行程:
貝爾實驗室九號計畫
佇貝爾實驗室九號計畫,kill 程式不實際執行終止操作,嘛無需要予𪜶行程 ID。相反,伊需要行程的實際名稱,並輸出為 rc(九號計劃所使用的殼層)的命令來刣死行程。
有一个類似命令 ` slay ` 執行類似操作,但是用著拒絕予按呢刣死的行程。
範例
刣死所有 troff 的實例:
` ` ` kill troff | rc ` ` `
參見
- 訊號
- Xkill
- Killall
- Pkill
- signal . h
參考
外部連結
- 命令:` kill `– 命令佮工具(Commands & Utilities)參考,單一 UNIX® 規範第七期,由國際開放標準組織發布
- 系統呼叫:` kill `– 系統介面(System Interfaces)參考,單一 UNIX® 規範第七期,由國際開放標準組織發布