运行 kill -l 可列出所有信号编号与名称,前31个为标准信号(如1 SIGHUP、2 SIGINT),34起为实时信号;推荐脚本中使用符号名(如 kill -SIGTERM "$pid")并检查存在性,按 SIGTERM→SIGKILL 顺序终止进程。

直接运行 kill -l 即可列出所有可用信号的编号与名称,这是编写可靠进程控制脚本的基础。
查看完整信号列表(含编号和名称)
在终端中执行:
kill -l
输出类似:
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP ...
34) SIGRTMIN 35) SIGRTMIN+1 ... 64) SIGRTMAX
注意:不同系统可能略有差异,但前31个标准信号(1–31)基本一致,34及以上为实时信号,编号不固定,应避免硬编码。
按编号查名称或按名称查编号
更精准地映射信号,推荐使用 kill -l 加参数:
-
kill -l 9→ 输出KILL -
kill -l KILL→ 输出9 -
kill -l SIGTERM→ 输出15
脚本中建议用信号名(如 SIGTERM)而非数字,提高可读性与可移植性。
在Shell脚本中安全使用信号
避免直接写死数字,改用符号名并做存在性检查:
- 用
kill -SIGTERM "$pid"替代kill -15 "$pid" - 检查信号是否支持:
if kill -l "$signame" >/dev/null 2>&1; then ... fi - 处理无响应进程时,按顺序发送:SIGTERM → 等待 → SIGKILL(不可捕获,慎用)
补充:获取POSIX标准信号说明
查阅手册确认语义:
man 7 signal
重点关注:
• SIGHUP:常用于重载配置(如nginx -s reload)
• SIGINT:等效 Ctrl+C,适合交互式中断
• SIGUSR1/SIGUSR2:用户自定义用途,适合脚本间通信
• SIGCHLD:子进程状态改变时通知父进程,写守护进程时关键











