(1)正在运行脚本,若直接关闭终端,则终端会向正在运行的脚本发送SIGUP信号
(2)正在运行的脚本,若ctrl+c终止,则shell会向脚本发送SIGINT信息
(3)kill -9 发送的SIGKILL信息无法捕获和忽略
使用如下的脚本通过生成的txt文件及内容即可验证上述场景。
#!/bin/bash
# 若程序正在运行直接关闭终端则会生成1.txt
handler1() {
echo "hangup" > 1.txt
exit 0
}
# 若程序正在运行ctrl+c终止程序则会生成2.txt
handler2() {
echo "interrupt" > 2.txt
exit 0
}
# kill -9 发送的SIGKILL信息无法捕获和忽略,所以无法生成3.txt
handler3() {
echo "kill" > 3.txt
exit 0
}
trap handler1 SIGHUP
trap handler2 SIGINT
trap handler3 SIGKILL
sleep 10
echo "hello" > 5.txt 