Linux中的Pgrep命令

时间:2020-03-05 15:29:08  来源:igfitidea点击:

本文介绍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

插入符号('^')字符在字符串的开头匹配,而美元'$'在结 tail。

默认情况下,“ 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