Linux
和其他类 Unix
操作系统中的 pgrep
命令是用于在查找并列出与指定条件匹配的进程 ID
(PID
)的命令,他是 ps
和 grep
的组合。它通常用于脚本和命令行环境中,以便自动化任务或调试。
基本语法:
pgrep [选项] <模式>
常用选项
-l
:显示进程名称和进程 ID。-a
:显示完整的命令行。-d <分隔符>
:指定用于分隔多个进程 ID 的分隔符(默认为换行符)。-f
:匹配完整的命令行而不是仅匹配进程名称。-v
:反向匹配,即显示不匹配模式的进程。-x
:精确匹配,要求进程名称完全匹配给定的模式(而不是部分匹配)。-u <用户名>
:仅匹配指定用户的进程。-P <父PID>
:仅匹配指定父进程的子进程。-o
:仅显示最旧的匹配进程(根据启动时间)。-n
:仅显示最新的匹配进程(根据启动时间)。-G <组名>
:仅匹配指定组的进程。-t <终端名>
:仅匹配在指定终端上运行的进程。-s
:仅显示匹配进程的会话 ID(SID)。
常用示例
- 查找进程名称包含
ssh
的进程ID
:
pgrep ssh
- 查找进程名称完全匹配
sshd
的进程ID
:
pgrep -x sshd
- 查找进程名称包含
ssh
的进程ID
和进程名称:
pgrep -l ssh
- 查找完整命令行包含
root
的进程ID
和完整命令行:
pgrep -f root -a
- 查找由用户
alice
启动的进程ID
:
pgrep -u alice
- 查找父进程
ID
为1234
的所有子进程的进程ID
:
pgrep -P 1234
- 使用逗号分隔符列出匹配模式的多个进程
ID
:
pgrep -d, ssh
- 反向匹配,显示不包含
bash
的进程ID
:
pgrep -v bash
注意事项
pgrep
依赖进程名称或命令行中的字符串进行匹配,因此它的行为可能会受到系统配置和当前运行进程的影响。- 在使用
-f
选项时,pgrep
会匹配完整的命令行,这可能会导致更多的匹配结果,特别是当命令行参数包含搜索字符串时。 - 使用
-x
选项进行精确匹配时,确保模式字符串与进程名称完全匹配,包括大小写。
pgrep
是一个强大的工具,通过结合不同的选项,可以灵活地查找和列出符合特定条件的进程。在编写脚本或进行系统调试时,它是一个非常有用的命令。