pkill 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,属于进程与系统命令族(见进程与系统命令族)。不想先 ps 找 PID 再 kill?按名字直接杀就靠它。
pkill 按进程名(或用户、终端等)匹配进程,向它们发信号(默认 SIGTERM)。它是 pgrep(找)+ kill(发)的合体,省去手动查 PID。
一、基本用法
bash
pkill nginx # 杀所有名为 nginx 的进程(SIGTERM)
pkill -9 python # -9 = SIGKILL,强制立即杀
pkill -u bob # 杀 bob 用户的所有进程默认发 SIGTERM(15),进程可优雅退出;杀不掉的用
-9(SIGKILL)强制,但失去清理机会(可能留临时文件/锁)。-u按用户杀,登出某人所有进程常用。
二、匹配命令行:-f
bash
pkill -f "python worker.py" # -f 匹配整个命令行,而非仅进程名
pkill -f "train.*resnet" # 支持正则默认
pkill name只比进程名(如python),不比参数。要按"启动命令/参数"匹配必须-f(匹配完整命令行)。注意-f用正则,pkill -f python会误杀所有含 python 的命令行,谨慎。
三、先确认再杀(安全)
bash
pgrep -a python # 先看会匹配到哪些(见 [pgrep](/linux/cmd/pgrep.md))
pkill -e python # -e 杀的时候打印每个被干的 PID,有反馈生产环境建议先用 pgrep 预览匹配集合,确认范围再
pkill。-e(echo)让 pkill 打印实际处理的 PID,避免"以为杀了一个、实际误杀一片"。
四、与 kill / pgrep 的关系
bash
pgrep python # 只找 PID(列出)
pkill python # 找 + 杀
kill 1234 # 必须自己知道 PID(见 [kill](/linux/cmd/kill.md))pgrep 是 pkill 的"查找版"(只列不杀),kill 是"已知 PID 版"。按名批量杀用 pkill,已知单个 PID 用 kill,想先看匹配用 pgrep。
一句话总结
pkill = 按名杀进程(pgrep 找 + kill 发 的合体):默认 SIGTERM,-9 强制 SIGKILL;-u 按用户杀;-f 才匹配完整命令行(否则只比进程名,易误杀);生产先 pgrep -a 预览、pkill -e 看反馈再杀。区别于 kill(需已知 PID,见kill)和 pgrep(只找不杀,见pgrep)。