面试题答案
一键面试实现思路
- 使用
trap
命令来捕获SIGTERM
和SIGINT
信号,并指定对应的处理函数。 - 对于
SIGTERM
信号,定义一个函数,该函数先输出正在优雅关闭的信息,然后使用sleep
暂停5秒,最后使用trap - SIGTERM
恢复默认处理。 - 对于
SIGINT
信号,定义一个函数,输出提示用户使用SIGTERM
信号优雅关闭的信息。
脚本代码
#!/bin/bash
# 处理SIGTERM信号的函数
handle_sigterm() {
echo "正在优雅关闭..."
sleep 5
trap - SIGTERM # 恢复SIGTERM信号的默认处理
}
# 处理SIGINT信号的函数
handle_sigint() {
echo "请使用SIGTERM信号优雅关闭。"
}
# 捕获SIGTERM信号
trap handle_sigterm SIGTERM
# 捕获SIGINT信号
trap handle_sigint SIGINT
# 模拟脚本运行,防止脚本立即退出
while true; do
sleep 1
done