來源:https://www.itcoder.tech/posts/pkill-command-in-linux/
原文:https://linuxize.com/post/pkill-command-in-linux/
本文講述 Linux 命令 pkill
的基礎用法。
pkill
是一個命令行工具,它根據現有標准,給正在運行的程序進程發送信號。進程可以通過他們的完整名字,部分名字,用戶進程或者其他屬性指定。
這個pkill
命令是procps
(或者procps-ng
)軟件包中的一部分。該軟件包被預裝在幾乎所有的 Linux 發行版上。 pkill
是一個基於打印匹配進程列表的pgrep
程序的封裝。
一、如何使用 pkill 命令
pkill
命令的語法如下:
pkill [OPTIONS] <PATTERN>
匹配的<PATTERN>
被指定使用擴展正則表達式。
當不使用任何選項時,pkill
發送15
(TERM
)信號給匹配名字的所有運行程序的 PIDS。例如,想要完美停止所有 firefox 進程,你需要運行:
pkill -9 firefox
當最少有一個正在運行的進程匹配給出的名字時,這個命令返回0
,否則,返回退出代碼1
。在 shell 腳本中,返回值很有用。
想要發送不同的信號給匹配進程,運行pkill
命令加上--signal
選項,再加上進程號或者進程名。另一種發送信號的方式就是,運行pkill
加上使用-
作為前綴的信號名字或者信號序號。
使用kill -l
命令列出所有可用的信號。
最常被使用的信號是:
- 1(HUP):重新加載進程
- 9 (KILL): 殺死進程
- 15(TERM):完美地停止一個進程
信號可以通過三種不同的方式來指定:
- 使用一個信號序號(例如: -1)
- 使用 “SIG” 前綴 (例如: -SIGHUP)
- 不使用 “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
結束SSH登錄終端
linux-test158:~ # who
root pts/0 Dec 21 14:15 (10.110.158.201)
plmf pts/4 Dec 21 14:08 (10.110.158.66)
linux-test158:~ # pkill -9 -t pts/4
二、總結
pkill
命令被用來發送信號給正在運行的程序。