Linux 中的 Pgrep 命令

评论 0 浏览 0 2020-02-19

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

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

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 脚本时很有用。

如果您想向匹配的进程发送信号,请使用 pkill 。该命令是 pkill 的包装,并使用相同的选项和模式匹配。

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 页或在终端中输入man pgrep

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

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