pgrep 是根据进程名查找进程 pid 的专用命令,比 ps aux | grep xxx 更简洁、精准,专门用来快速获取进程id,是运维最常用命令之一。
一、核心作用
- 按进程名称搜索运行中的进程
- 只输出 pid(干净无冗余信息)
- 支持精确匹配、模糊匹配、按用户查找
二、基本语法
pgrep [选项] 进程名
三、最常用选项(必记)
| 选项 | 功能 |
|---|---|
| 无选项 | 只输出匹配进程的 pid(最简) |
| -l | 显示 pid + 进程名 |
| -a | 显示 pid + 完整命令行 |
| -x | 精确匹配(完全等于进程名才显示) |
| -u 用户名 | 只查指定用户的进程 |
| -c | 只输出匹配到的进程数量 |
| -f | 匹配完整命令行(而非仅进程名) |
四、实用示例
1. 只查 pid(最常用)
pgrep nginx pgrep sshd
输出:
1234 5678
2. 显示 pid + 进程名
pgrep -l nginx
输出:
1234 nginx 5678 nginx
3. 显示 pid + 完整命令(排查最实用)
pgrep -a java
4. 精确匹配(避免误杀/误查)
比如只想查 ssh,不想匹配 sshd:
pgrep -x ssh
5. 查指定用户的进程
pgrep -u root nginx
6. 统计进程数量
pgrep -c firefox
7. 匹配完整命令行(适用带参数进程)
pgrep -f "python app.py"
五、高级组合用法(超级实用)
1. 直接杀死匹配到的进程(搭配 pkill)
pkill 和 pgrep 语法完全一样,只是把查找变成杀死:
pkill nginx # 等价于 pgrep nginx | xargs kill
2. 查看进程树(pgrep + pstree 组合)
pstree -p $(pgrep nginx)
六、与 ps grep 的对比
pgrep:pgrep nginx → 只输出pid,精准简洁
ps grep:ps aux | grep nginx → 输出一堆信息,还会包含grep自身
七、总结
- 日常快速查pid:
pgrep 进程名 - 看进程名+pid:
pgrep -l 进程名 - 精确匹配:
pgrep -x 进程名 - 直接杀进程:
pkill 进程名
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论