Linux中 pkill 命令使用教程

本文介绍了 Linux 中 pkill 命令的基础用法。

pkill 是一个命令行实用程序,用于根据给定的标准将信号发送到正在运行的程序的进程。可以通过进程的全名或部分名,运行进程的用户或其他属性来指定进程。

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

如何使用 pkill 命令

pkill 命令的语法如下:

pkill [OPTIONS] <PATTERN>

<PATTERN> 使用扩展的正则表达式指定匹配。

不带任何选项调用时, pkill15(TERM) 信号发送到与给定名称匹配的所有正在运行的程序的 PID 。例如,要正常停止所有 firefox 进程,可以运行:

pkill -9 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

您还可以组合选项和搜索模式。例如,要发送 KILL 信号,请在用户 “mark” 下运行并在名称中包含 “gnome” 的所有进程输入:

pkill -9 -u mark gnome

要仅显示最近(最旧)或最近(最新)启动的进程,请使用 -n(最新)或 -o(最旧)选项。

例如,要杀死最近创建的 screen

pkill -9 -n screen

结论

pkill 命令用于根据不同的标准向正在运行的程序发送信号。

有关 pkill 命令的更多信息,请访问 pkill 手册页或 在终端中键入 man pkill 查看。