张芷铭的个人博客

pkill 根据进程属性批量查找并终止进程,无需手动输入 PID,比 kill 更高效。

基本语法

1
pkill [选项] [匹配条件]

常用选项

选项作用
-f匹配完整命令行(含参数)
-x精确匹配完整进程名
-u按用户匹配
-i忽略大小写
-l列出匹配进程,不终止
-9强制终止(SIGKILL)

按进程名终止

1
2
pkill run_mpi       # 终止进程名含 "run_mpi" 的进程
pkill -x run_mpi.sh # 精确匹配完整进程名

按命令行匹配(推荐)

-f 匹配完整命令行,解决"进程名相同但命令不同"场景:

1
2
3
pkill -f run_mpi.sh                    # 终止命令行含 "run_mpi.sh" 的进程
pkill -f "python train.py"             # 区分不同参数的 python 进程
pkill -f "flux_fill_scene_tags.*test3" # 正则匹配

按用户终止

1
2
pkill -u root python3      # 终止 root 用户的 Python 进程
pkill -u zhangsan -f mpi   # 终止 zhangsan 用户含 mpi 的进程

强制终止

1
2
pkill -9 -f run_mpi.sh      # 发送 SIGKILL 信号
pkill -SIGKILL -f run_mpi.sh

预览匹配结果

1
pkill -l -f run_mpi.sh  # 仅列出,不终止

常用信号

编号名称作用
15SIGTERM默认信号,正常退出
9SIGKILL强制终止,无清理
2SIGINT等价于 Ctrl+C
1SIGHUP重启进程

注意事项

  1. 避免误杀:先用 -l 预览,再执行终止
  2. 权限限制:普通用户只能终止自己的进程,终止他人进程需 sudo
  3. 验证结果:用 pgrep -f <条件> 确认是否终止成功

Comments