pkill
是 Linux 中一个强大的进程管理命令,用于通过进程名或其他属性发送信号(默认 SIGTERM
)终止进程。它是 pgrep
的扩展版本,结合了查找和终止功能。以下是详细解析:
pkill [选项] [模式]
选项 | 作用 |
---|---|
-信号 |
指定发送的信号(如 -9 或 -KILL 强制终止,默认 -15 /-TERM ) |
-f |
匹配完整的命令行(而不仅是进程名) |
-u 用户名 |
终止指定用户的进程 |
-x |
精确匹配进程名(避免误杀包含子字符串的进程) |
-n |
仅终止最新(最近启动)的匹配进程 |
-o |
仅终止最旧(最早启动)的匹配进程 |
-P PPID |
终止指定父进程下的子进程 |
-G GID |
终止指定组ID的进程 |
pkill nginx # 终止所有名为 "nginx" 的进程(发送 SIGTERM)
pkill -9 nginx # 强制终止(发送 SIGKILL)
pkill -u username # 终止用户 "username" 的所有进程
pkill -x bash # 仅终止名为 "bash" 的进程(不会误杀 "bashd")
pkill -f "python3 app.py" # 终止命令行包含 "python3 app.py" 的进程
pkill -n chrome # 仅终止最近启动的 Chrome 进程
pkill -o chrome # 仅终止最早启动的 Chrome 进程
谨慎使用 -f
和 -9
-f
可能误杀包含关键字的其他进程,建议先用 pgrep -f
确认。SIGKILL
(-9
)会强制终止进程,可能导致数据丢失,优先尝试默认的 SIGTERM
。权限限制
普通用户只能终止自己的进程,root
可终止所有进程。
无反馈提示
pkill
默认不显示终止的进程信息,可通过 pgrep
验证:
pgrep -l nginx # 查看匹配的进程
pgrep nginx | xargs ps -fp # 先查看进程详情
pkill nginx && echo "Processes terminated."
pkill -P 1234 # 终止父进程 PID 为 1234 的所有子进程
查看所有可用信号:
kill -l
常用信号:
- 1
/HUP
:重新加载配置
- 2
/INT
:中断(同 Ctrl+C)
- 9
/KILL
:强制终止
- 15
/TERM
:优雅终止(默认)
pkill
通过灵活的匹配规则简化了进程终止操作,适合批量管理进程。建议先使用 pgrep
或 ps
确认目标进程,避免误操作。