Linux 信号学习
参考阅读路线
信号是什么?
以下是 baeldung 的 SIGINT And Other Termination Signals in Linux 文章中关于信号的介绍:
The signals are a method of communication between processes. When a process receives a signal, the process interrupts its execution and a signal handler is executed.
以下是非官方翻译:
信号是进程间通信的一种方式。当进程接收到信号时,进程会中断其执行,并执行信号处理程序。
参考资料
入门
- SIGINT And Other Termination Signals in Linux - Baeldung
- 适合第一次了解 Linux 信号。
- 重点:
SIGINT、SIGTERM、SIGQUIT、SIGKILL的区别。
Linux 官方 / 权威参考
-
- Linux 信号机制的核心参考资料。
- 重点:signal disposition、default action、ignore、signal handler、blocking、pending。
-
kill命令的参考文档。- 重点理解:
kill本质上是“发送信号”,而不只是“杀死进程”。
-
Signal Handling - GNU C Library Manual
- 从程序和操作系统机制的角度理解信号。
- 后续可以继续了解
sigaction()、signal mask 等内容。
Shell、终端与 Job Control
- GNU Bash Reference Manual
- 用于理解 Bash 如何处理信号,以及 signal、终端、前台进程组和 Job Control 之间的关系。
- 可以重点关注
Ctrl+C、Ctrl+Z、SIGINT、SIGTSTP。
Docker / Kubernetes 实际应用
-
docker container stop - Docker Docs
- 理解容器停止时的
SIGTERM → 等待 → SIGKILL流程。
- 理解容器停止时的
-
docker container kill - Docker Docs
- 对比
docker stop和docker kill。
- 对比
-
Pod Lifecycle - Kubernetes Documentation
- 理解 Pod 终止、graceful shutdown、
terminationGracePeriodSeconds与 Linux 信号之间的关系。
- 理解 Pod 终止、graceful shutdown、
-
- Kubernetes 官方中文版本。
建议阅读顺序
- Baeldung:先建立
SIGINT、SIGTERM、SIGKILL等信号的基本认识。 signal(7):建立准确的 Linux signal 模型。kill(1):结合命令实际操作。- GNU Bash Manual:理解
Ctrl+C、终端和 Job Control。 - Docker:观察 signal 在容器停止中的实际应用。
- Kubernetes:进一步理解 Pod 的优雅终止机制。
- GNU C Library:需要继续深入 signal 底层机制时再阅读。