pkill 根据进程属性批量查找并终止进程,无需手动输入 PID,比 kill 更高效。
基本语法
常用选项
| 选项 | 作用 |
|---|
-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 # 仅列出,不终止
|
常用信号
| 编号 | 名称 | 作用 |
|---|
| 15 | SIGTERM | 默认信号,正常退出 |
| 9 | SIGKILL | 强制终止,无清理 |
| 2 | SIGINT | 等价于 Ctrl+C |
| 1 | SIGHUP | 重启进程 |
注意事项
- 避免误杀:先用
-l 预览,再执行终止 - 权限限制:普通用户只能终止自己的进程,终止他人进程需
sudo - 验证结果:用
pgrep -f <条件> 确认是否终止成功
Comments