跳至內容

Kill(命令)

出自Taiwan Tongues 台語維基
於 2025年8月23日 (六) 12:20 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

佇電腦運算中,` 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® 規範第七期,由國際開放標準組織發布