最直接有效的办法是用 pidof 或 pgrep 命令;pidof 适合按可执行文件名精准查 PID,pgrep 支持用户、终端、命令行等多维度筛选,两者均轻量且避免 ps | grep 的误匹配问题。

Linux 中根据进程名称快速查找进程 ID,最直接有效的办法是用 pidof 或 pgrep 命令。两者都轻量、无需额外安装(主流发行版默认包含),但适用场景略有不同——选对工具能省去解析输出、过滤干扰的麻烦。
用 pidof 快速获取二进制程序的 PID
pidof 专为“按可执行文件名查 PID”设计,匹配精准、输出简洁,适合脚本中直接取值。
- 基本用法:
pidof nginx—— 返回所有 nginx 进程的 PID,空格分隔 - 只要一个 PID(比如主进程):
pidof -s nginx - 用逗号分隔多个 PID:
pidof -d',' sshd - 查找运行中的 Shell 脚本(如 backup.sh):
pidof -x backup.sh(不加-x找不到脚本进程) - 排除当前脚本自身(常用于守护脚本):
pidof -x -o $$ myscript.sh
用 pgrep 更灵活地按条件筛选
pgrep 支持用户、终端、完整命令行、正则匹配等维度,适合排查多实例、权限混杂或带参数启动的进程。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 查进程名(默认模糊匹配):
pgrep python可能匹配 python、python3、pyinstaller 等 - 精确匹配完整进程名:
pgrep -x bash(只匹配名为bash的进程,不匹配bashrc) - 显示进程名和 PID:
pgrep -l nginx - 按用户过滤:
pgrep -u www-data apache2 - 匹配完整命令行(含参数):
pgrep -f "node server.js" - 只取最新启动的进程(PID 最大):
pgrep -n java
简单对比:什么时候该用哪个?
如果只是确认服务是否在跑、或脚本里要 kill 主进程,pidof 更快更稳;如果遇到同名进程太多、需要区分用户或终端、或者命令带参数(如 java -jar app.jar),pgrep 更可靠。
两者都不依赖 ps 解析,避免了 ps aux | grep xxx 带来的误匹配(比如 grep 自身进程被列出来)和格式不稳定问题。
小技巧:先看再杀,避免误操作
查到 PID 后别急着 kill,建议组合使用:
- 确认进程详情:
ps -p $(pgrep -n nginx) -o pid,ppid,comm,args - 安全终止前预览:
pgrep -l nginx→ 确认无误 →pkill nginx - 想只杀某个用户的进程:
pkill -u alice python(pkill 与 pgrep 参数高度兼容)

















