Linux 中的 pkill 命令
本文介绍了 Linux pkill
命令的基础知识。
pkill
是一个命令行实用程序,它根据给定的条件向正在运行的程序的进程发送信号。可以通过进程的完整名称或部分名称、运行进程的用户或其他属性来指定进程。
pkill
命令是procps
(或procps-ng
)软件包的一部分,几乎所有Linux发行版都预安装了该软件包。 pkill
是 pgrep
程序的基本包装,仅打印匹配进程的列表。
如何使用pkill
命令
pkill
命令的语法如下:
pkill [OPTIONS] <PATTERN>
匹配的<PATTERN>
是使用扩展正则表达式指定的。
当不带任何选项调用时,pkill
会将 15
(TERM
) 信号发送到与给定名称匹配的所有正在运行的程序的 PID。例如,要正常停止所有 Firefox 进程,您可以运行:
pkill -15 firefox
当至少一个正在运行的进程与请求的名称匹配时,该命令返回0
。否则,退出代码
是1
。这在编写 shell 脚本时很有用。
要将不同的信号发送到匹配的进程,请使用 --signal
选项调用 pkill
命令,后跟数字或符号信号名称。发送信号的另一种方法是运行 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
您还可以组合选项和搜索模式。例如,要向在用户“mark”下运行且名称中包含“gnome”的所有进程发送 KILL
信号,您可以输入:
pkill -9 -u mark gnome
要仅显示最近最久(最旧)或最近(最新)启动的进程,请使用-n
(最新)或-o
(最旧)选项。
例如,杀死最近创建的 screen :
pkill -9 -n screen
结论
pkill
命令用于根据不同的标准向正在运行的程序发送信号。
有关 pkill
命令的更多信息,请访问 pkill man
页或在终端中输入man pkill
。
如果您有任何问题或反馈,请随时发表评论。