Skip to main content

Signal

编号信号名称描述常见用途
1SIGHUPHangup终端断开,常用于通知进程重读配置文件
2SIGINTInterrupt键盘中断(Ctrl+C)
3SIGQUITQuit键盘退出(Ctrl+\),会生成 Core Dump
9SIGKILLKill强制终止,不可被捕获或忽略
10SIGUSR1User 1用户自定义信号 1
11SIGSEGVSegmentation fault段错误,非法内存访问
12SIGUSR2User 2用户自定义信号 2
13SIGPIPEBroken pipe管道破裂:向无读端的管道写入数据
14SIGALRMAlarm clock定时器超时
15SIGTERMTerminate终止信号,kill 命令默认信号,可被捕获以安全退出
17SIGCHLDChild exited子进程状态改变
18SIGCONTContinue继续执行已停止的进程
19SIGSTOPStop停止进程,不可被捕获或忽略
20SIGTSTPTerminal stop键盘停止信号(Ctrl+Z)
34-64SIGRTMIN-SIGRTMAXReal-time signals实时信号

信号处理

# 捕获信号:收到 SIGINT 或 SIGTERM 时执行 echo
trap 'echo "Received signal"' SIGINT SIGTERM

# 忽略信号
trap '' SIGINT SIGTERM

# 恢复默认处理逻辑
trap - SIGINT SIGTERM

信号发送

# 使用信号名称
kill -SIGINT <pid>
kill -SIGTERM <pid>

# 使用信号编号
kill -9 <pid> # 发送 SIGKILL
kill -15 <pid> # 发送 SIGTERM

# 发送给进程组
kill -SIGTERM -<pgid>