Linux 中的 Pkill 命令
本文介紹 Linux pkill
命令的基礎。
pkill
是一個命令行程序,可根據指定的標準信號發送到正在運行的進程。 可以通過進程的全名或部分名,運行進程的用戶或其他屬性來指定進程。
pkill
命令是procps
(或procps-ng
)軟件包的一部分,該軟件包已預先安裝在幾乎所有 Linux 發行版中。 pkill
是pgrep
程序的包裝程序,它僅打印匹配進程的列表。
如何使用pkill
命令
pkill
命令的語法如下:
pkill [OPTIONS] <PATTERN>
匹配的<PATTERN>
是使用擴展的正則表達式指定的。
不帶任何選項調用時,pkill
將15
(TERM
)信號發送給與指定名稱匹配的所有正在運行的程序的 PID。 例如,要正常停止所有 Firefox 進程,可以運行:
pkill -9 firefox
當至少一個正在運行的進程與請求的名稱匹配時,命令返回0
。 否則,退出代碼爲1
。 這在編寫 shell 腳本時很有用。
要將不同的信號發送到匹配的進程,請使用--signal
選項調用pkill
命令,後跟數字或符號信號名稱。 發送信號的另一種方法是運行pkill
,後跟信號名稱或以連字符開頭的數字(-
)。
使用 kill -l
命令列出所有可用信號。
最常用的信號是:
1
(HUP
):重新加載進程。9
(KILL
):殺死進程。15
(TERM
):正常停止進程。
可以用三種不同的方式指定信號:
- 使用帶 “SIG” 前綴(例如 - SIGHUP)的數字(例如 - 1)
- 不帶 “SIG” 前綴(例如 - HUP) )。
例如,要重新加載 Nginx 進程,請運行:
pkill -HUP nginx
pkill
使用正則表達式來匹配進程名稱。 在將信號發送給它們之前,最好先使用pgrep
命令打印匹配的進程。 例如,列出所有名稱中包含 “ssh” 的進程:
1039 sshd
2257 ssh-agent
6850 ssh
31279 ssh-agent
如果您只想向名稱與搜索模式完全相同的進程發送信號,則可以使用:
pkill '^ssh$'
插入號(^
)字符在字符串的開頭,而美元$
在字符串的末尾。
默認情況下,pkill
僅與進程名稱匹配。 當使用-f
選項時,該命令將與完整的參數列表匹配。 如果命令中包含空格,請用引號將整個命令引起來:
pkill -9 -f "ping 8.8.8.8"
使用-u
選項告訴pkill
匹配給定用戶正在運行的進程:
pkill -u mark
要指定多個用戶,請用逗號分隔其名稱:
pkill -u mark,danny
您還可以組合選項和搜索模式。 例如,要發送KILL
信號,請在用戶 “mark” 下運行並在名稱中包含 “ gnome” 的所有進程輸入:
pkill -9 -u mark gnome
要僅顯示最近(最舊)或最近(最新)啓動的進程,請使用-n
(代表最新)或-o
(代表最舊)選項。
例如,殺死最近創建的 screen:
pkill -9 -n screen
結論
pkill
命令用於根據不同的標準向正在運行的程序發送信號。
有關pkill
命令的更多信息,請訪問 pkill man 頁面或在終端中輸入man pkill
。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://www.myfreax.com/pkill-command-in-linux/