pkill是Linux系统中强大的进程管理工具,它允许用户通过进程名、用户名、终端或完整的命令行模式来发送信号给匹配的进程。与传统的kill命令需要指定PID不同,pkill可以通过模式匹配的方式批量操作进程,大大提高了进程管理的效率。
作为procps工具包的一员,pkill基于/proc文件系统提供的进程信息进行匹配,支持正则表达式和精确匹配等多种模式。它特别适合在脚本中管理服务、批量终止进程、优雅重启守护进程等场景。需要注意的是,pkill的强大匹配功能也意味着需要谨慎使用,避免误终止关键进程。
1. 基本语法
| 命令 | 说明 |
|---|
pkill 进程名 | |
pkill -f "模式" | |
pkill -u 用户名 进程名 | |
pkill -x 进程名 | |
pkill -l 进程名 | |
2. 常用信号
| 命令 | 说明 |
|---|
pkill -15 进程名 | |
pkill -9 进程名 | |
pkill -HUP 进程名 | |
pkill -INT 进程名 | |
pkill -USR1 进程名 | |
3. 匹配控制
| 命令 | 说明 |
|---|
pkill -x nginx | |
pkill -f "python3 app.py" | |
pkill -u deploy -x node | |
pkill -t pts/2 | |
pkill -P 1234 | |
4. 安全操作流程
| 命令 | 说明 |
|---|
pgrep -a nginx | |
pgrep -afu deploy node | |
pgrep -f "python3 app.py" | |
pkill -x nginx | |
echo $? | |
5. 服务和应用示例
| 命令 | 说明 |
|---|
pkill -HUP nginx | |
pkill -u www-data -x php-fpm | |
pkill -f "gunicorn: worker" | |
pkill -f "node server.js" | |
pkill -x firefox | |
6. 故障排查指南
| 问题 | 解决方法 |
|---|
| 命令执行后无反应 | 先用 pgrep -a 相同模式 验证是否有匹配进程 |
| 误终止了错误进程 | |
| 操作不允许 | |
| 进程没有终止 | 先用SIGTERM,必要时再升级到 -9 强制终止 |
| 脚本中无匹配时失败 | |
温馨提示:
pkill是一把双刃剑——它既强大又危险。在生产环境中操作前,务必先用pgrep预览匹配结果。对于关键服务,建议使用-HUP优雅重载而非直接终止。在脚本中使用时,记得检查退出码并做好错误处理。
关注公众号(haopython),请回复: LLT004