最轻量可靠的批量回收方式是kill $(pgrep -x 名称),需加-x精确匹配进程名、-u $user限定用户,避免误杀;慎用-9,优先普通kill,执行后须用pgrep或ps验证是否清空。

直接用 pgrep 找进程 ID,再用 kill 杀掉,是最轻量、最可靠的批量回收方式——不依赖脚本,不启动新进程,一条命令就能干完。
精准匹配进程名(避免误杀)
pgrep 默认是模糊匹配,比如 pgrep python 可能匹配到 python3、ipython 甚至含 python 的路径。要严格按进程名(即 comm 字段)匹配,必须加 -f 以外的限定:
- 用
-x参数:完全匹配可执行文件 basename,例如pgrep -x nginx只匹配名为nginx的进程,不匹配nginx: master process - 避免用
-f:它会搜索完整命令行,容易跨进程误匹配(如杀掉日志里含关键词的其他进程) - 加
-u $USER限制用户,防止误删他人进程(尤其在共享服务器上)
一步完成查找+终止(推荐组合)
不用管道拼接 pgrep | xargs kill,有竞态风险(进程可能在 pgrep 后、kill 前退出)。更稳的方式是用 pgrep 的 -P 或直接交给 kill 处理:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
kill $(pgrep -x nginx)—— 简洁安全,命令替换会在执行前展开全部 PID -
kill -9 $(pgrep -u $USER -x java)—— 强制终止用户下的 Java 进程(慎用 -9,优先试普通 kill) - 如果想确认再执行,先运行
pgrep -x nginx -l(-l 显示名称),核对无误后再 kill
批量清理多个同类进程(带条件过滤)
某些服务启多个实例(如不同端口的 node.js),可用 --ppid 或结合 ps 过滤:
- 杀某个父进程下的所有子进程:
pgrep -P $(pgrep -x supervisor) | xargs kill - 按启动参数筛选(需 -f):
pgrep -f "gunicorn.*--bind.*8001" | xargs kill,注意此时务必核对pgrep -f ... -l - 限制数量防误操作:
pgrep -x python | head -n 3 | xargs kill(只杀前 3 个)
安全收尾:验证是否清空
执行 kill 后别假设成功,快速检查:
-
pgrep -x nginx—— 无输出表示已退出 -
ps -o pid,comm,args -p $(pgrep -x nginx) 2>/dev/null—— 显示残留信息(如有) - 配合
lsof -i :端口号确认端口是否释放(如清理 web 服务后查 80/443)
不复杂但容易忽略:多数情况下,kill $(pgrep -x 名称) 就够用;加 -u 和 -x 是关键防护,比写脚本更直接可靠。










