> 进程管理 > pgrep

pgrep: 查找进程ID

`pgrep` 命令在运行的进程列表中,根据特定条件(例如进程名、用户、完整命令行)搜索进程,并输出相应的进程ID(PID)。这比组合使用 `ps` 命令和 `grep` 命令更有效率且更方便地找到所需进程。

概述

`pgrep` 通过进程名、用户ID、终端、父进程ID等多种条件过滤进程,并返回相应的PID。在脚本中查找并控制特定进程或检查其状态时非常有用。

主要功能

  • 支持基于正则表达式的搜索
  • 按用户/组过滤进程
  • 可按完整命令行(full command line)搜索
  • 提供选择最旧或最新进程的选项

主要选项

搜索条件

输出格式与排序

生成的命令:

请尝试组合命令。

描述:

`pgrep` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

查找特定进程PID

pgrep sshd

查找名为 `sshd` 的进程ID。

按用户查找进程PID

pgrep -u root

查找 `root` 用户运行的所有进程的ID。

同时输出PID和名称

pgrep -l firefox

同时输出 `firefox` 进程的ID和名称。

按完整命令行搜索

pgrep -f "apache2.*worker"

查找完整命令行同时包含 `apache2` 和 `worker` 的进程ID。

查找精确匹配的进程

pgrep -x ssh

查找名称精确为 `ssh` 的进程ID。(排除 `sshd`)

查找最新进程

pgrep -n chrome

查找 `chrome` 进程中最近启动的进程的ID。

提示与注意事项

`pgrep` 功能强大,但使用不当可能导致意外终止或影响进程,请谨慎使用。

与 pkill 的联动

与手动将 `pgrep` 找到的PID传递给 `kill` 命令不同,使用 `pkill` 命令可以使用与 `pgrep` 相同的搜索条件直接终止进程或发送信号,非常方便。例如,`pkill -f "nginx.*worker"` 可以直接终止 `nginx` 工作进程。

利用正则表达式

`pgrep` 默认支持正则表达式。利用这一点可以进行复杂的模式匹配。

  • `pgrep 'httpd|nginx'` 会查找 `httpd` 或 `nginx` 进程。
  • 与 `-f` 选项一起使用,例如 `pgrep -f '^/usr/bin/python3.*script.py$'`,可以精确找到特定脚本的执行。

使用 -x 选项进行精确匹配

`pgrep` 默认执行部分匹配。例如,`pgrep ssh` 会找到 `ssh` 以及 `sshd`。如果只想查找名称精确为 `ssh` 的进程,请使用 `-x` 选项。这对于防止意外影响其他进程非常重要。


相同类别命令