Linux 中的 pkill 命令

评论 0 浏览 0 2020-02-29

本文介绍了 Linux pkill 命令的基础知识。

pkill 是一个命令行实用程序,它根据给定的条件向正在运行的程序的进程发送信号。可以通过进程的完整名称或部分名称、运行进程的用户或其他属性来指定进程。

pkill命令是procps(或procps-ng)软件包的一部分,几乎所有Linux发行版都预安装了该软件包。 pkillpgrep 程序的基本包装,仅打印匹配进程的列表。

如何使用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

如果您有任何问题或反馈,请随时发表评论。

最后更新2023-10-15
0 个评论
标签