Linux中的 pgrep 命令

pgrep 是一个命令行实用程序,使您可以根据给定条件查找正在运行的程序的进程 ID,完整或部分的进程名称,运行该进程的用户或其他属性。

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

pgrep 命令是 procps( 或 procps-ng) 软件包的一部分,该软件包已预装在几乎所有 Linux 发行版中。

如何使用 pgrep 命令

pgrep 命令的语法如下:

pgrep [OPTIONS] <PATTERN>

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

不带任何选项调用时, pgrep 输出与指定名称匹配的所有正在运行的程序的 PID 。例如,要查找 SSH 服务器的 PID ,应运行:

pgrep ssh

如果存在名称与 “ssh” 匹配的且正在运行的进程,则其 PID 将显示在屏幕上。如果未找到匹配项,则输出为空。

1039
2257
6850
31279

当至少一个正在运行的进程与请求的名称匹配时,该命令返回 0 。否则,退出代码为 1 。在 shell 脚本中使用时,这很有用。

pgrep 在每行上打印每个匹配的进程 ID 。而使用 -d 选项允许您指定其他定界符。例如,如果要使用空格作为定界符,请输入:

pgrep ssh -d' '

输出

1039 2257 6850 31279

选项 -l 告诉 pgrep 需要显示进程名称和 ID :

pgrep ssh -l

pgrep  使用正则表达式执行搜索操作,并将列出名称中包含 “ssh” 的所有进程:

1039 sshd
2257 ssh-agent
6850 ssh
31279 ssh-agent

如果只想匹配名称与搜索模式完全相同的进程,则可以使用:

pgrep '^ssh$' -l
6850 ssh

尖号字符 (^) 匹配字符串的开头,美元 $ 则匹配字符串的结尾。

默认情况下, pgrep 仅与进程名称匹配。使用 -f 选项时,命令将与完整的参数列表匹配。

pgrep -f ssh

使用 -u 选项告诉 pgrep 显示给定的用户正在运行的进程:

pgrep -u root

要指定多个用户,请用逗号分隔其名称:

pgrep -u root,mark

您还可以组合选项和搜索模式。例如,要打印所有在用户 “mark” 下运行并且名称中包含 “gnome” 的进程及其名称,您可以输入:

pgrep -l -u mark gnome

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

例如,要查找由用户 “mark” 最近启动的过程,请输入:

pgrep -lnu mark

从上面的示例中可以看到,您还可以组合选项,而选项之间不能有空格,并且可以用一个短划线隔开。

要反转匹配,即仅显示不符合给定条件的过程,请使用 -v 选项。以下命令将打印所有不是由 “mark” 用户运行的进程:

pgrep -v -u mark

-c 选项指示 pgrep 仅打印匹配进程的数量。例如,要查找以 “mark” 用户身份运行的进程数,请输入:

pgrep -c -u mark

结论

pgrep 命令用于根据不同的标准找出正在运行的程序的 PID 。

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