pkill 核心是“匹配+信号”,默认发 SIGTERM,支持按进程名(-x 精确、-i 忽略大小写)、命令行(-f)、用户(-u)、终端(-t)等条件筛选,可发送重载(-HUP)、暂停(-STOP)等非终止信号。

Linux 中使用 pkill 根据条件发送信号,核心是“匹配 + 信号”,不需要先查 PID,一步到位。它默认发 SIGTERM(15号信号),适合安全退出;需要强制终止时才加 -9;其他信号如重载配置用 -HUP。关键是选对匹配方式和过滤条件,避免误杀。
按进程名精准匹配
默认只匹配进程名(comm 字段),比如 nginx、python3,但要注意可能匹配到子串(如 chrome 会命中 chromium-browser)。
- 用
-x实现完全匹配:pkill -x nginx只杀名字**刚好是**nginx的进程,不碰nginx: worker - 用正则精确锚定:
pkill '^ssh$'——^开头、$结尾,等效于-x ssh - 忽略大小写:
pkill -i firefox可匹配Firefox、FIREFOX
按完整命令行匹配
当多个同名进程跑不同脚本(如十几个 python3),光看进程名不够,得看参数。
- 加
-f匹配整个命令行:pkill -f "python3 data_clean.py" - 注意空格要加引号,否则 shell 会拆分;也支持正则,如
pkill -f "python3.*backup" - 搭配
pgrep -f预览:运行pgrep -f "python3.*log"先确认 PID 列表,再决定是否发信号
按用户或终端筛选后发信号
适合批量清理会话或限制某用户资源,权限需足够(通常需 root 或目标用户自身)。
- 终止指定用户所有进程:
pkill -u alice(默认 SIGTERM);强制终止加-9 - 终止多个用户:
pkill -u alice,bob - 踢出某个终端的所有进程(如断开异常 SSH):
pkill -t pts/2 - 反向操作:杀掉**非 root** 用户的进程 →
pkill -v -u root
发非终止类信号(重载、暂停、恢复)
pkill 不只是“杀”,更是“控制”。只要进程能响应对应信号,就能实现热更新、调试等操作。
- 重载 Nginx 配置(不停服务):
pkill -HUP nginx - 挂起最近启动的
vim进程:pkill -STOP -n vim - 恢复最老的
sleep进程:pkill -CONT -o sleep - 查可用信号列表:
kill -l;信号可写数字(-1)、全名(-SIGHUP)或简写(-HUP)


















