pkill
是一个命令行程序,用于与正则表达式匹配的进程发送信号。可以通过进程的全名或部分名,运行进程的用户或其他属性来指定进程。
本教程介绍Linux pkill
命令的基础。pkill
命令是procps
或procps-ng
软件包的一部分。
几乎所有Linux发行版都已预安装pkill
命令。 pkill
是pgrep
命令的再次封装,但pgrep
仅打印匹配进程的列表。
pkill命令选项
pkill
命令的语法是pkill [OPTIONS] <PATTERN>
。<PATTERN>
使用的是扩展的正则表达。
在不带任何选项运行pkill命令时,pkill
将终止信号发送给与指定正则表达式匹配的进程PID。例如,要正常停止所有Firefox进程,可以运行命令pkill -9 firefox
。
当至少一个正在运行的进程与正则表达式匹配时,pkill命令退出代码返回0
。 否则,退出代码为1
。 这在编写shell脚本时很有用。
pkill -9 firefox
进程信号 signal
要将不同的信号发送到正则表达式匹配的进程,请使用--signal
选项运行pkill
命令,后跟信号数字。
发送信号的另一种方法是运行pkill
,后跟信号名称或以连字符-
开头的数字。使用kill -l
命令列出所有可用信号。
最常用的信号是包括1
/HUP
重新加载进程。9
/KILL
杀死进程。15
/TERM
正常停止进程。
可以用三种不同的方式指定信号,第一种是使用带SIG前缀的数字,例如-1
。第二种不带SIG前缀,例如-HUP
。
假设你需要重新加载Nginx 进程,可以运行命令pkill -HUP nginx
。
pkill -HUP nginx
pkill
使用正则表达式来匹配进程名称。在将信号发送给它们之前,最好先使用pgrep
命令打印匹配的进程。
例如,列出所有包含ssh
的进程,如果您只想向名称与搜索模式完全相同的进程发送信号,则可以运行命令pkill '^ssh$'
。
^
符号表示匹配行首,而美元$则匹配行尾。^ssh$
表示完整匹配ssh。
pgrep '^ssh$'
pkill '^ssh$'
1039 sshd
2257 ssh-agent
6850 ssh
31279 ssh-agent
搜索进程
默认情况下,pkill仅与进程名称匹配。当使用-f
选项时,pkill命令将会匹配进程启动参数列表。
如果pkill命令中包含空格,请用引号将整个命令括起来。例如命令pkill -9 -f "ping 8.8.8.8"
。
除了可以匹配进程名称和进程启动参数之外,还可以使用-u
选项匹配指定用户运行的进程,要指定多个用户,请用逗号分隔其名称。
pkill -9 -f "ping 8.8.8.8"
pkill -u mark
pkill -u mark,danny
您还可以组合选项和搜索模式。例如要发送KILL
信号给gnome和mark用户启动进程,则可以没命令pkill -9 -u mark gnome
。
要仅显示最远(最旧)或最近(最新)启动的进程,请使用-n
(代表最新)或-o
(代表最老)选项。
例如命令pkill -9 -n screen
,将会kill掉最近创建的screen进程。
pkill -9 -u mark gnome
pkill -9 -n screen
结论
pkill
命令用于与正则表达式匹配的进程发送信号。有关pkill
命令的更多信息,请访问pkill man页面或在终端中输入man pkill
。
如果您有任何问题或反馈,请随时发表评论。