Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 進程終止命令大全:kill、killall、pkill、xkill 用法與信號機制詳解

編輯:Linux 教學

前言

Linux 中終止進程不僅是「強制關閉」,更涉及信號機制、進程組、圖形介面等多維度。本文系統整理 kill、killall、pkill、xkill 四大指令,並深入解析信號種類、特殊用法與最佳實務。

一、核心指令對照表

指令匹配方式典型用法適用場景
killPIDkill -9 1234精確終止單一進程
killall進程名稱 (精確)killall firefox依名稱終止所有同名進程
pkill進程名稱 (模式)pkill -f "python.*script.py"模式匹配、支援使用者/終端機過濾
xkill視窗點擊xkill → 點擊視窗圖形介面掛死視窗急救

二、kill 指令詳細用法

1. 基本語法

kill [信號] PID...

2. 常用信號

信號編號/名稱用途特性
1 / SIGHUP掛起/重讀配置常用於 daemon 重載設定
2 / SIGINT中斷 (Ctrl+C)可被程式捕捉處理
9 / SIGKILL強制終止不可捕捉/忽略/阻塞,立即結束,不執行清理
15 / SIGTERM正常終止 (預設)可被捕捉,程式可釋放資源、存檔後退出
17/19/23 / SIGSTOP暫停進程不可捕捉,進程凍結
18/19/25 / SIGCONT繼續暫停的進程配合 SIGSTOP 使用

3. 實戰範例

# 1. 正常關閉 (給程式機會收尾)
kill 1234
# 等同 kill -15 1234

# 2. 強制殺掉 (頑固進程)
kill -9 1234

# 3. 暫停/繼續 (除錯用)
kill -STOP 1234
kill -CONT 1234

# 4. 終止當前使用者所有進程 (極度危險!)
kill -9 -1

# 5. 結合 pgrep 批次殺掉
kill -9 $(pgrep firefox)

三、killall 指令

語法

killall [-選項] 進程名稱...

關鍵選項

選項說明
-e精確匹配長名稱 (超過 15 字元時避免誤殺)
-i互動模式,逐一確認
-g殺掉整個進程組
-w等待進程真正結束 (可能永久阻塞)
-q靜默模式,無匹配不報錯
-v顯示信號是否發送成功
-I忽略大小寫

範例

killall firefox
killall -9 -e chromium-browser
killall -u www-data   # 殺掉 www-data 使用者的所有進程

四、pkill 指令 (更強大的模式匹配)

語法

pkill [選項] 模式

獨特優勢

  • 支援完整命令列模式匹配 (-f)
  • 可依終端機 (-t)、使用者 (-u)、群組 (-G) 過濾
  • 可針對最新/最舊進程 (-n/-o)

範例

pkill firefox
pkill -f "python.*manage.py runserver"
pkill -u nginx
pkill -t pts/2
pkill -n sshd   # 只殺最新啟動的 sshd

五、xkill:圖形介面急救神器

xkill
# 滑鼠游標變成「X」或骷髏圖示
# 點擊任意視窗 → 該視窗所屬進程的 X 連線被切斷 → 視窗關閉
# 右鍵取消

適用於 Firefox、LibreOffice 等 GUI 程式假死無法正常關閉時。

六、進程查找輔助指令

指令用途
ps aux | grep 關鍵字經典查找
pgrep -l 關鍵字輸出 PID + 名稱
pidof 程式名僅輸出 PID
top / htop互動式查看

七、最佳實務建議

  1. 優先用 SIGTERM (15):給程式釋放鎖、存檔、關閉連線的機會。
  2. SIGKILL (9) 為最後手段:可能導致資料損毀、鎖殘留、子進程變孤兒。
  3. 生產環境避免 kill -9 -1 或 killall -9:範圍過大極易誤傷。
  4. 配合 systemd 管理服務:systemctl stop service 會依序發送 SIGTERM → 等待 → SIGKILL,比手動 kill 更安全。
  5. 使用 pkill -f 時小心模式過廣:先用 pgrep -f 預覽匹配列表。

八、killall 手冊頁節錄 (man killall)

NAME
       killall - kill processes by name

SYNOPSIS
       killall [-egiqvw] [-signal] name ...
       killall -l
       killall -V

DESCRIPTION
       killall sends a signal to all processes running any of the specified commands.
       If no signal is specified, SIGTERM is sent.

       Signals can be specified by name (e.g. -HUP) or number (e.g. -1).
       Signal 0 (check existence) can only be specified by number.

OPTIONS
       -e  Require exact match for very long names.
       -g  Kill the process group.
       -i  Interactive confirmation.
       -l  List known signal names.
       -q  Quiet: no complaints if no processes killed.
       -v  Report if signal sent.
       -V  Version info.
       -w  Wait for processes to die.

FILES
       /proc  location of proc filesystem

BUGS
       Killing by file only works for executables kept open during execution.
       Warning: killall name may not work as expected on non-Linux systems.
Copyright © Windows教程網 All Rights Reserved