kill — 发送信号到进程

kill 用于向进程发送信号,最常用的是终止进程。

命令说明

kill 向指定 PID 的进程发送信号。虽然名为 "kill",但它可以发送任何信号。默认发送 SIGTERM(信号 15),该信号允许进程优雅退出。如果进程不响应,可以使用 SIGKILL(信号 9)强制终止。

应用场景

  • 终止无响应进程
  • 优雅关闭服务
  • 重载配置文件(发送 SIGHUP)
  • 挂起/恢复进程
  • 调试进程

常用示例

示例 1:优雅终止进程

bash
复制代码
kill 12345

示例 2:强制终止进程

bash
复制代码
kill -9 12345

bash
复制代码
kill -KILL 12345

示例 3:发送 SIGHUP 让进程重新加载配置

bash
复制代码
kill -HUP 5678

示例 4:终止进程组

bash
复制代码
kill -TERM -1234

示例 5:查看可用信号

bash
复制代码
kill -l
plaintext
复制代码
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
 5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
 9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGSTKFLT
...

示例 6:批量杀死匹配进程

bash
复制代码
pkill -f "python.*script"

常用信号列表

编号 名称 说明
1 SIGHUP 挂断(常用来重载配置)
2 SIGINT 中断(Ctrl+C)
3 SIGQUIT 退出并生成 core dump
9 SIGKILL 强制终止(不能被捕获)
15 SIGTERM 优雅终止(默认信号)
17 SIGCHLD 子进程状态改变
18 SIGCONT 继续执行
19 SIGSTOP 停止(不能被捕获)
20 SIGTSTP 暂停(Ctrl+Z)

help 参数详解

参数 长参数 说明
-s SIGNAL --signal SIGNAL 指定信号名称
-SIGNAL 直接指定信号编号或名称
-l --list 列出信号名称
-p --pid 只打印 PID,不发送信号
-q --queue 使用 sigqueue 发送信号
--timeout 等待进程响应超时