信号处理 #
一、常见信号 #
| 信号 | 编号 | 说明 |
|---|---|---|
| SIGHUP | 1 | 挂起 |
| SIGINT | 2 | 中断(Ctrl+C) |
| SIGQUIT | 3 | 退出 |
| SIGKILL | 9 | 强制终止 |
| SIGTERM | 15 | 终止 |
| SIGTSTP | 20 | 暂停(Ctrl+Z) |
二、trap命令 #
bash
#!/bin/bash
# 捕获信号
trap 'echo "收到SIGINT"' SIGINT
# 捕获多个信号
trap 'cleanup' SIGINT SIGTERM
# 忽略信号
trap '' SIGINT
# 恢复默认
trap - SIGINT
三、清理处理 #
bash
#!/bin/bash
# 设置清理函数
cleanup() {
echo "清理临时文件..."
rm -f /tmp/temp_$$.*
exit
}
# 注册清理
trap cleanup EXIT SIGINT SIGTERM
# 创建临时文件
temp_file="/tmp/temp_$$_data"
echo "使用临时文件: $temp_file"
# 主逻辑
echo "执行任务..."
sleep 10
四、实战示例 #
bash
#!/bin/bash
# 优雅退出
graceful_shutdown() {
echo "正在关闭服务..."
# 保存状态
# 关闭连接
# 清理资源
exit 0
}
trap graceful_shutdown SIGTERM SIGINT
# 长时间运行的服务
while true; do
echo "服务运行中..."
sleep 1
done
下一步 #
你已经掌握了信号处理,接下来让我们学习 调试技巧!
最后更新:2026-03-27