插件窝 干货文章 linux中pkill命令详解

linux中pkill命令详解

进程 终止 匹配 pkill 131    来源:    2025-04-07

pkill 是 Linux 中一个强大的进程管理命令,用于通过进程名或其他属性发送信号(默认 SIGTERM)终止进程。它是 pgrep 的扩展版本,结合了查找和终止功能。以下是详细解析:


1. 基本语法

pkill [选项] [模式]

2. 常用选项

选项 作用
-信号 指定发送的信号(如 -9-KILL 强制终止,默认 -15/-TERM
-f 匹配完整的命令行(而不仅是进程名)
-u 用户名 终止指定用户的进程
-x 精确匹配进程名(避免误杀包含子字符串的进程)
-n 仅终止最新(最近启动)的匹配进程
-o 仅终止最旧(最早启动)的匹配进程
-P PPID 终止指定父进程下的子进程
-G GID 终止指定组ID的进程

3. 常见用法示例

终止指定进程

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 进程

4. 注意事项

  • 谨慎使用 -f-9

    • -f 可能误杀包含关键字的其他进程,建议先用 pgrep -f 确认。
    • SIGKILL-9)会强制终止进程,可能导致数据丢失,优先尝试默认的 SIGTERM
  • 权限限制
    普通用户只能终止自己的进程,root 可终止所有进程。

  • 无反馈提示
    pkill 默认不显示终止的进程信息,可通过 pgrep 验证:

    pgrep -l nginx     # 查看匹配的进程
    

5. 结合其他命令

终止所有匹配进程并显示结果

pgrep nginx | xargs ps -fp  # 先查看进程详情
pkill nginx && echo "Processes terminated."

终止特定父进程的子进程

pkill -P 1234   # 终止父进程 PID 为 1234 的所有子进程

6. 信号列表

查看所有可用信号:

kill -l

常用信号: - 1/HUP:重新加载配置
- 2/INT:中断(同 Ctrl+C)
- 9/KILL:强制终止
- 15/TERM:优雅终止(默认)


总结

pkill 通过灵活的匹配规则简化了进程终止操作,适合批量管理进程。建议先使用 pgrepps 确认目标进程,避免误操作。