pgrep 命令可直接通过进程名获取 pid,避免 ps+grep 组合及 grep 自身干扰;支持精准匹配(-x)、用户限定(-u)、命令行匹配(-f)、最新进程(-n)等选项,并可结合 -l、-a 查看上下文,确保操作安全。

直接用 pgrep 进程名 就能快速拿到 PID,不用拼接 ps 和 grep,也避开了 grep 自身进程的干扰。
基础查找:只输出 PID 最简洁
默认行为就是精准返回匹配进程的 ID,每行一个:
-
pgrep nginx→ 输出所有 nginx 相关进程的 PID(如1234、5678) -
pgrep -c sshd→ 只显示数量,比如2,适合脚本判断服务是否运行 -
pgrep -d, python→ 用英文逗号分隔 PID,方便后续传给其他命令,如kill $(pgrep -d, python)
带信息查看:确认是不是你要的那个进程
光看数字容易误判,加选项一眼看清上下文:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
-
pgrep -l ssh→ 显示1234 sshd,区分 ssh 和 sshd -
pgrep -a java→ 显示完整命令行,比如12345 java -jar app.jar --port=8080,排查多实例时特别有用 -
pgrep -x bash→ 只匹配名字**完全等于** bash 的进程,不会拉出 bashrc 或 bash_profile
按条件缩小范围:避免查到不该查的
线上环境常有多个用户跑同类程序,不加限定容易越权操作:
-
pgrep -u www-data nginx→ 只查 www-data 用户启的 nginx,root 下执行也不影响别人 -
pgrep -f "gunicorn.*8001"→ 匹配命令行参数,查监听 8001 端口的 gunicorn 实例(注意:-f 要配合 -l 先看一眼再操作) -
pgrep -n node→ 只取最新启动的那个 node 进程 PID,适合重启时找主进程
安全组合用法:查完再动手,不盲目 kill
别一上来就 pgrep xxx | xargs kill,风险高:
- 先用
pgrep -u $USER -x myapp确认目标,再执行kill $(pgrep -u $USER -x myapp) - 想杀全部?优先用
pkill -u $USER -x myapp,它和 pgrep 参数一致,但语义更明确 - 查父子关系?
pgrep -P $(pgrep -x nginx)找 nginx 的子 worker 进程










