本文介绍Linux pgrep命令的基础知识。pgrep是一个命令行实用程序,可让您根据给定的条件查找正在运行的程序的进程ID。 它可以是完整或部分的进程名称,运行该进程的用户或其他属性。
pgrep命令是procps(或procps-ng)软件包的一部分,该软件包已预装在几乎所有Linux发行版中。
如何使用pgrep命令
pgrep命令的语法如下:
pgrep [选项] <模式>
使用扩展的正则表达式指定匹配的<模式>。
当不带任何选项调用时,pgrep将显示与给定名称匹配的所有正在运行程序的PID。 例如,要查找SSH服务器的PID,应运行:
[linuxmi@linux:~/www.linuxmi.com]$ pgrep ssh
如果存在名称与“ssh”匹配的正在运行的进程,则其PID将显示在屏幕上。 如果未找到匹配项,则输出为空。
输出
668
1555
当至少一个正在运行的进程与请求的名称匹配时,该命令返回0。 否则,退出代码为1。在shell脚本中使用时,这很有用。
pgrep在换行符上打印每个匹配的进程ID。 -d选项允许您指定其他定界符。 例如,如果要使用空格作为定界符,请输入:
[linuxmi@linux:~/www.linuxmi.com]$ pgrep ssh -d’ ‘
输出
668 1555
-l选项告诉pgrep显示进程名称及其ID:
[linuxmi@linux:~/www.linuxmi.com]$ pgrep sshd -l
pgrep使用正则表达式执行搜索操作,并将列出名称中包含“ ssh”的所有进程:
输出
668 sshd
1555 ssh-agent
如果只想匹配名称与搜索模式完全相同的进程,则可以使用:
[linuxmi@linux:~/www.linuxmi.com]$ pgrep ‘^sshd$’ -l
668 sshd
尖号(^)字符在字符串的开头匹配,而美元$在结尾。
默认情况下,pgrep只匹配进程名称。 使用-f选项时,该命令将与完整的参数列表匹配。
[linuxmi@linux:~/www.linuxmi.com]$ pgrep -f ssh
668
1555
使用-u选项告诉pgrep显示给定用户正在运行的进程:
[linuxmi@linux:~/www.linuxmi.com]$ pgrep -u root
要指定多个用户,请用逗号分隔其名称:
[linuxmi@linux:~/www.linuxmi.com]$ pgrep -u root,linuxmi
您还可以组合选项和搜索模式。例如,要打印所有在用户“linuxmi”下运行并且名称中包含“ gnome”的进程及其名称,您可以输入:
[linuxmi@linux:~/www.linuxmi.com]$ pgrep -l -u linuxmi gnome
1402 gnome-keyring-d
1417 gnome-session-b
1583 gnome-shell
1638 gnome-shell-cal
1986 gnome-software
8392 gnome-terminal-
要仅显示最近(最旧)或最近(最新)启动的进程,请使用-n(代表最新)或-o(代表最旧)选项。
例如,要查找由用户“linuxmi”启动的最新过程,请输入:
[linuxmi@linux:~/www.linuxmi.com]$ pgrep -lnu linuxmi
8793 bash
从上面的示例中可以看到,您还可以组合选项,而选项之间不能有空格,并且可以用一个短划线隔开。
要反转匹配,即仅显示不符合给定条件的进程,请使用-v选项。以下命令将打印用户“linuxmi”也未运行的所有进程:
[linuxmi@linux:~/www.linuxmi.com]$ pgrep -v -u linuxmi
-c选项告诉pgrep只打印匹配进程的计数。例如,要查找以“linuxmi”用户身份运行的进程,请输入:
[linuxmi@linux:~/www.linuxmi.com]$ pgrep -c -u linuxmi
78
总结
pgrep命令用于根据不同的标准找出正在运行的程序的PID。
有关pgrep命令的更多信息,请访问pgrep手册页或在终端中输入man pgrep。
如果您有任何疑问或反馈,请随时发表留言告诉我们。
更多Linux命令相关信息见Linux命令大全 专题页面 http://www.info110.com/topicnews.aspx?tid=16