killall — 依名稱終止所有符合的程序
向所有名稱完全符合的程序傳送訊號(預設終止)。
語法
killall [選項] 程序名稱...
常用選項
| 選項 | 說明 | 範例 |
|---|---|---|
-訊號 / -s 訊號 |
指定訊號(預設 SIGTERM) | killall -9 firefox |
-i, --interactive |
終止每個程序前詢問確認 | killall -i nginx |
-u 使用者 |
只終止指定使用者的程序 | killall -u alice firefox |
-v, --verbose |
顯示每個被傳送訊號的程序 | killall -v nginx |
-w, --wait |
等待被終止的程序全部結束 | killall -w nginx |
-e, --exact |
要求程序名稱精確匹配(含路徑) | killall -e /usr/bin/vim |
-I, --ignore-case |
忽略大小寫匹配 | killall -I NGINX |
使用範例
範例 1:終止所有 nginx 程序
傳送 SIGTERM 給所有名稱為 nginx 的程序,讓它們優雅結束。
$ sudo killall nginx
範例 2:強制終止無回應的程序
使用 SIGKILL 強制立即終止。
$ killall -9 frozen_app
範例 3:互動式確認終止
對每個符合的程序個別確認,避免誤殺重要程序。
$ killall -i python3
Kill python3(1234) ? (y/N) y
Kill python3(5678) ? (y/N) n
常見錯誤與排錯
killall: no process found
- 原因
- 沒有找到符合名稱的程序(killall 要求完整名稱匹配)。
- 解法
- 先用 pgrep -l 搜尋確認程序名稱,注意不能用子字串,改用 pkill 支援子字串匹配。