pgrep 是 linux 中根据进程名、用户、终端等条件查找并输出匹配进程 pid 的轻量级命令,默认只输出 pid,适合脚本使用;支持 -f 匹配完整命令行、-u 限定用户、-t 指定终端、-x 精确匹配进程名,并可通过 -l 显示名称、-c 统计数量。

pgrep 是 Linux 中专门用于根据进程名、用户、终端等条件查找并输出匹配进程 PID 的轻量级命令,默认只输出 PID,适合脚本中直接使用。
基础用法:按进程名匹配
最常用的方式是直接指定进程名(不区分大小写):
- pgrep nginx —— 输出所有名为 nginx 的进程 PID(包括 master 和 worker)
-
pgrep -f "python3 app.py" —— 使用
-f匹配完整命令行(含参数),适用于带参数启动的进程
常用筛选选项
增强匹配精度,避免误杀或漏查:
-
pgrep -u www-data nginx —— 限定用户为
www-data的 nginx 进程 -
pgrep -t pts/1 sshd —— 查找在终端
pts/1上运行的 sshd 进程 -
pgrep -x firefox —— 使用
-x要求精确匹配进程名(排除firefox-bin等变体)
组合使用与脚本友好技巧
pgrep 输出默认以换行分隔,可直接配合 kill 或其他命令:
- kill $(pgrep nginx) —— 终止所有 nginx 进程(注意权限和风险)
-
pgrep -l nginx —— 加
-l同时显示 PID 和进程名,便于确认 -
pgrep -c nginx —— 加
-c只统计数量,适合监控脚本判断进程是否存在
注意点
pgrep 默认只匹配进程的「主名称」(即 /proc/PID/stat 中的 comm 字段),不含路径和参数。若进程由 shell 启动或重命名过,可能无法匹配,此时应优先用 -f 配合完整命令行字符串。另外,无匹配时 pgrep 返回非零退出码,可在脚本中用 $? 判断。











