侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux pgrep命令教程:精确进程搜索与管理(附实例详解和注意事项)

在Linux系统管理和监控中,快速识别特定的进程是一个常见任务。pgrep命令是一个非常有用的工具,它允许你根据进程名称或其他属性来查找进程。下面是对pgrep命令的一个详细介绍,包括如何在不同的Linux发行版中使用它,以及一些实用的示例。

Linux pgrep命令介绍

pgrep(process grep)命令用于查找匹配特定条件的进程的进程ID(PID)。它提供了一种更简单的方法来过滤进程列表,而不需要结合使用psgrep命令。这个命令非常有用,因为它可以快速地基于进程名称、用户ID、进程组ID等属性来搜索进程。

Linux pgrep命令适用的Linux版本

pgrep命令在大多数现代Linux发行版中都是可用的,包括但不限于Ubuntu、Debian、Fedora、CentOS和Arch Linux。对于早期的版本或者一些小众的发行版,如果pgrep命令不可用,你可能需要安装procpsprocps-ng包。

  • 在CentOS 7上,你可以使用yum来安装:
    [linux@bashcommandnotfound.cn ~]$ yum install procps-ng
    ```
    
  • 在CentOS 8或其他使用dnf的发行版上,使用:
    [linux@bashcommandnotfound.cn ~]$ dnf install procps-ng
    ```
    
  • 在基于Debian的系统上,如Ubuntu,使用apt
    [linux@bashcommandnotfound.cn ~]$ apt-get install procps
    ```
    

Linux pgrep命令的基本语法

语法格式:

pgrep [options] pattern

Linux pgrep命令的常用选项或参数说明

下面是pgrep命令的一些常用选项,这些选项可以帮助你更精确地搜索进程:

选项描述
-l显示进程名称以及PID。
-u只显示由指定用户拥有的进程。
-n只显示最新启动的进程。
-o只显示最老启动的进程。
-v反向匹配,选择不匹配指定条件的进程。
-x精确匹配进程名称。
-P指定父进程PID。
-g指定进程组ID。
-s指定会话ID。
-f完整比对进程的命令行参数。

如果有超过20个选项,以上列出的是根据其实用性进行筛选的最常用选项。

Linux pgrep命令实例详解

实例1:查找特定名称的进程

假设你想找出所有ssh进程的PID。

[linux@bashcommandnotfound.cn ~]$ pgrep ssh

实例2:查找特定用户的进程

如果你需要找出用户linuxuser的所有进程。

[linux@bashcommandnotfound.cn ~]$ pgrep -u linuxuser

实例3:查找并显示进程名称

要找到所有nginx进程的PID,并显示进程名称。

[linux@bashcommandnotfound.cn ~]$ pgrep -l nginx

实例4:查找最新启动的进程

查找最新启动的httpd进程。

[linux@bashcommandnotfound.cn ~]$ pgrep -n httpd

实例5:查找特定父进程ID的进程

如果你想找到所有父进程ID为1234的子进程。

[linux@bashcommandnotfound.cn ~]$ pgrep -P 1234

实例6:精确匹配进程名称

假设你想精确匹配名为mysqld的进程。

[linux@bashcommandnotfound.cn ~]$ pgrep -x mysqld

实例7:查找特定进程组的进程

如果你需要找出进程组ID为555的所有进程。

[linux@bashcommandnotfound.cn ~]$ pgrep -g 555

实例8:使用完整命令行参数查找进程

查找具有完整命令行参数/usr/sbin/apache2 -k start的进程。

[linux@bashcommandnotfound.cn ~]$ pgrep -f "/usr/sbin/apache2 -k start"

实例9:反向匹配进程

找出所有不是由用户root拥有的进程。

[linux@bashcommandnotfound.cn ~]$ pgrep -v -u root

实例10:查找属于特定会话ID的进程

要找出会话ID为1000的进程。

pgrep -s 1000

实例11:列出指定用户和进程名称的进程

如果你想找出用户bob运行的所有名为node的进程。

pgrep -u bob node

实例12:使用正则表达式查找进程

假设你想找出所有以sess开头的进程名称。

pgrep '^sess'

实例13:查找多个用户的进程

查找用户alicecharlie的进程。

pgrep -u alice,charlie

实例14:查找除了指定用户之外的所有进程

如果你想找出除了用户root之外的所有进程。

pgrep -v -u root

实例15:查找并列出进程的详细信息

查找所有httpd进程,并列出详细信息,包括进程的PID和完整命令行。

pgrep -a httpd

实例16:查找特定用户组的进程

如果要查找用户组www-data的所有进程。

pgrep -G www-data

实例17:查找没有控制终端的进程

查找所有没有关联控制终端的进程。

pgrep -d

实例18:查找指定时间之后启动的进程

假设你想找出在最近10分钟内启动的所有进程。

pgrep -n -t $(($(date +%s) - 600))

实例19:结合使用pgreppkill

如果你想杀死所有名为apache2的进程。

pkill $(pgrep apache2)

或者更简单地:

pkill apache2

实例20:使用pgrep监控特定进程

如果你想每隔5秒监控名为cron的进程。

watch -n 5 pgrep -l cron

这些实例展示了pgrep命令的多样性和灵活性,可以帮助用户在Linux系统中有效地搜索和管理进程。

Linux pgrep命令的注意事项

  • 当使用pgrep命令时,确保你拥有足够的权限来查看目标进程,否则可能不会显示所有的进程。
  • 精确匹配(-x选项)将只匹配完全符合条件的进程名称,有时候可能会漏掉一些你期望找到的进程。
  • 使用完整命令行参数查找(-f选项)可能会导致比预期更多的匹配结果,因为它会匹配所有包含指定字符串的命令行。
  • 如果你收到bash: pgrep: command not found的错误信息,请根据上文提供的指令安装pgrep
0

评论区