kill 概述
`kill` 命令向具有特定進程 ID(PID)的進程發送信號。最常見的信號是請求終止進程的信號,但根據信號的種類,進程可能會有不同的響應。例如,可以請求進程暫停或重新加載配置文件。
進程 ID (PID) 的重要性
`kill` 命令基本上接受 PID 作為參數。因此,準確知道要控制的進程的 PID 是重要的。可以使用 `ps` 命令或 `top` 命令來查看進程的 PID。
kill 的主要角色
- 終止進程: 強制或正常終止不再需要或故障的進程。
- 重啟/重新加載進程: 通過發送特定信號促使進程重新讀取配置文件或重新啟動。
- 系統資源管理: 終止消耗過多資源的進程,以確保系統穩定性。
最常用的信號
雖然有多種信號,但以下兩種是最常用的:
主要信號
- **SIGTERM (15, 默認)**: 向進程發送“終止”的柔性請求。進程在收到此信號時可以執行清理操作並終止。在大多數情況下,會首先嘗試此信號。
- **SIGKILL (9)**: 立即強制終止進程。進程無法忽略或攔截此信號,並且會被強制終止而沒有執行清理操作的機會。應作為最後手段使用。
主要 kill 命令選項
`kill` 命令使用信號號碼或信號名稱來控制進程。向特定進程發送信號時,必須準確指定該進程的 PID。
1. 基本用法
2. 有用的信號
3. 查看所有信號列表
生成的命令:
請試著組合命令。
這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。
`kill` 執行命令。
請將上述選項組合在一起,與 AI 一同虛擬執行命令。
killall 命令(按名稱終止進程)
`killall` 命令與 `kill` 不同,使用進程的名稱而不是 PID,向所有與該名稱匹配的進程發送信號。這在終止特定應用程序的所有實例時非常方便。
按名稱正常終止進程
killall nginx
向所有名為 `nginx` 的進程發送 SIGTERM 信號以請求正常終止。
按名稱強制終止進程
killall -9 firefox
向所有名為 `firefox` 的進程發送 SIGKILL 信號以立即強制終止。
僅終止特定用戶進程
killall -u $(whoami) chrome
僅終止當前用戶的 `chrome` 進程,對其他用戶的 `chrome` 進程不會產生影響。
pkill 命令(按模式終止進程)
`pkill` 命令類似於 `killall` 但按名稱終止進程,使用正則表達式模式來查找進程,這使得它更靈活。這在用部分名稱查找進程或同時終止多個相關進程時非常有用。
按模式正常終止進程
pkill http
向所有名稱中包含 'http' 的進程發送 SIGTERM 信號以終止它們。 (例如:`httpd`,`apache2` 等)
按模式強制終止進程
pkill -9 mysql
向所有名稱中包含 'mysql' 的進程發送 SIGKILL 信號以強制終止它們。
終止屬於特定用戶的進程
pkill -u www-data php-fpm
終止所有屬於 `www-data` 用戶的 'php-fpm' 進程。
使用示例
`kill`,`killall`,`pkill` 命令的各種使用示例,幫助你學習如何有效管理系統的進程。
終止特定進程 ID (PID)
kill 12345
向 PID 為 `12345` 的進程發送 SIGTERM 信號以嘗試正常終止。
強制終止進程 (使用 PID)
kill -9 54321
當 PID 為 `54321` 的進程未響應時,使用 `SIGKILL` 信號強制終止。
Nginx 進程重新加載 (使用 SIGHUP)
sudo kill -1 $(cat /run/nginx.pid)
找到 Nginx 的主進程(PID),並發送 `SIGHUP` 信號以重新讀取配置文件。 (Nginx 進程 PID 可以通過 `ps aux | grep nginx` 等方式確認)
按名稱終止所有 Chrome 瀏覽器
killall chrome
正常終止所有運行中的 Chrome 瀏覽器進程。 (關閉窗口後未保存的內容可能會丟失)
終止用戶 'johndoe' 的所有進程
sudo killall -9 -u johndoe
強制終止用戶 `johndoe` 執行的所有進程。 (需要管理員權限)
終止佔用 CPU 的進程(示例)
# 1. 使用 top 或 htop 確認 PID(例如:12345)
# 2. 終止該 PID
kill 12345
通過 `top` 或 `htop` 確認佔用 CPU 的進程的 PID,然後終止的常見場景。