Linux 信号含义
下面按 信号编号(标准 x86 / x86_64 Linux) 顺序,对常见 Linux 信号做简要说明,包含:信号名、描述、作用与意义。
| 信号 | 编号 | 描述 | 作用与意义 |
|---|---|---|---|
| HUP | 1 | Hangup(挂断) | 终端断开时发送给进程;守护进程常用它重新加载配置(如 nginx -s reload) |
| INT | 2 | Interrupt(中断) | 用户按 Ctrl+C 产生;用于优雅终止前台进程 |
| QUIT | 3 | Quit | 用户按 Ctrl+\;类似 INT,但通常会产生 core dump,用于调试 |
| ILL | 4 | Illegal instruction | 执行了非法/不支持的 CPU 指令;表示程序二进制或运行环境异常 |
| TRAP | 5 | Trace/breakpoint trap | 断点/单步调试陷阱;供调试器(gdb)使用 |
| ABRT | 6 | Abort | 调用 abort() 触发;表示程序自身检测到严重错误,常产生 core |
| BUS | 7 | Bus error | 总线错误(非法内存对齐/硬件访问);比段错误更偏向硬件层内存访问错误 |
| FPE | 8 | Floating point exception | 浮点异常(除零、溢出等);用于数值计算错误处理 |
| KILL | 9 | Kill | 强制杀死进程;不能被捕获、阻塞或忽略,管理员终极大招 |
| USR1 | 10 | User-defined 1 | 用户自定义信号;常用于应用自定义行为(日志轮转、切换模式等) |
| SEGV | 11 | Segmentation fault | 非法内存访问(空指针、越界);最常见崩溃原因,通常产生 core |
| USR2 | 12 | User-defined 2 | 用户自定义信号;与 USR1 类似,应用自行约定用途 |
| PIPE | 13 | Broken pipe | 向已关闭读端的管道/套接字写数据;常见于socket 被对端关闭 |
| ALRM | 14 | Alarm clock | alarm()/setitimer() 超时;用于定时通知/超时控制 |
| TERM | 15 | Terminate | 请求进程终止;可被捕获,是“礼貌地退出”的默认信号(kill 默认) |
| STKFLT | 16 | Stack fault | 栈错误(历史遗留,现代架构很少用) |
| CHLD | 17 | Child stopped/terminated | 子进程状态变化(退出/停止);父进程用它回收僵尸进程(wait) |
| CONT | 18 | Continue | 让被 STOP 的进程继续执行;与作业控制相关 |
| STOP | 19 | Stop (suspend) | 暂停进程;不能被捕获或忽略,类似“冻结” |
| TSTP | 20 | Terminal stop | Ctrl+Z 产生;可被捕获,用于前台→后台切换 |
| TTIN | 21 | Terminal input for background | 后台进程试图读终端;shell 用来提示/阻止 |
| TTOU | 22 | Terminal output for background | 后台进程试图写终端;作业控制用 |
| URG | 23 | Urgent condition on socket | 套接字有紧急数据(TCP OOB);网络程序处理带外数据 |
| XCPU | 24 | CPU time limit exceeded | 超过 RLIMIT_CPU;用于限制进程 CPU 使用时间 |
| XFSZ | 25 | File size limit exceeded | 超过文件大小限制(RLIMIT_FSIZE);防止写爆磁盘 |
| VTALRM | 26 | Virtual timer expired | 虚拟时间(进程自身用时)定时器到;用于性能/调度 |
| PROF | 27 | Profiling timer expired | 性能分析定时器;profiling 工具使用 |
| WINCH | 28 | Window change | 终端窗口大小改变;程序可重绘界面(vim/top) |
| POLL | 29 | Pollable event | 异步 I/O / /dev/xxx 事件;类似 SIGIO |
| PWR | 30 | Power failure | 电源异常/即将关机;系统关机时通知进程做清理 |
| SYS | 31 | Bad system call | 执行了非法/不存在的系统调用;安全沙箱(seccomp)常触发 |
补充要点
- 不能捕获/忽略:
SIGKILL、SIGSTOP - 常见终止流程:
SIGTERM→ 程序清理资源退出;不行再SIGKILL - 调试类:
SIGSEGV / SIGABRT / SIGILL / SIGBUS / SIGFPE通常产生 core dump - 用户可编程:
SIGUSR1 / SIGUSR2 - 作业控制:
SIGINT / SIGQUIT / SIGTSTP / SIGCONT / SIGTTIN / SIGTTOU

浙公网安备 33010602011771号