Linux系统支持的信号可通过五种方法查询:一、kill -l列出全部信号;二、kill -l后接信号名反查编号;三、解析signal.h头文件;四、man 7 signal查阅手册页;五、C程序调用sigaction验证可用性。

如果您需要了解Linux系统支持哪些信号,或希望在使用kill命令前确认信号编号与名称的对应关系,则需通过内置机制查询可用信号列表。以下是查看系统信号的多种方法:
一、使用 kill -l 列出全部信号
该命令直接输出系统定义的所有标准信号名称及其编号,是获取信号信息最基础且权威的方式。输出结果按编号升序排列,不含前缀“SIG”,便于快速查阅和脚本调用。
1、在终端中输入 kill -l 并回车执行。
2、观察输出内容,例如第1行为 1) SIGHUP,表示信号编号1对应挂起信号。
3、如需仅查看某类信号(如所有实时信号),可结合grep过滤:kill -l | grep RTMIN。
二、使用 kill -l 后接信号名反查编号
当已知信号名称但不确定其数值时,可通过该方式快速定位编号,适用于编写脚本或调试时需精确指定信号编号的场景。
1、输入 kill -l SIGKILL 并执行,终端将返回 9。
2、同理,kill -l TERM 返回 15,kill -l HUP 返回 1。
3、注意:参数中可省略“SIG”前缀,大小写不敏感,kill -l sigterm 同样有效。
三、解析 /usr/include/asm-generic/signal.h 头文件
该路径下的头文件为内核源码中信号定义的原始依据,包含所有标准信号的宏定义,适合深入理解信号底层实现或验证系统实际支持范围。
1、执行 cat /usr/include/asm-generic/signal.h 2>/dev/null | grep "#define SIG[A-Z]" 提取信号宏定义行。
2、若提示文件不存在,尝试查找替代路径:find /usr/include -name "signal.h" -exec cat {} ; 2>/dev/null | grep "#define SIG"。
3、输出中每行形如 #define SIGHUP 1,即明确给出信号名与编号的映射关系。
四、使用 man 7 signal 查阅信号手册页
该手册页提供信号的完整语义说明、默认行为、是否可捕获/忽略、是否为实时信号等关键属性,是理解信号用途与风险的权威文档。
1、在终端运行 man 7 signal。
2、使用键盘 /SIGHUP 搜索特定信号条目。
3、重点查看 “Default action” 和 “Signal description” 栏位,例如确认 SIGKILL cannot be caught, blocked, or ignored。
五、通过 C 语言程序调用 sigaction 验证信号可用性
对于高度定制化环境(如精简容器镜像或嵌入式系统),部分信号可能未被完整实现。此方法通过系统调用直接探测信号是否被内核识别并接受注册。
1、创建 test_signal.c 文件,写入:#include
2、编译并运行:gcc test_signal.c -o test_signal && ./test_signal。
3、若输出 SIGUSR1 is supported,表明该信号在当前系统中可用;否则显示错误原因。

















