trap 命令用于指定在接收到信号后将要才去的行动。
trap command signal
command:执行的命令
signal:接收的信号
如果要重置某个信号的处理为默认值,只需要将 command 设置为 -
如果要忽略掉某个信号,只需要将 command 设置为空字符串 ""
下表列出了 X/Open 规范里面规定的一些比较重要的信号
信号 | 说明 |
---|---|
HUP(1) | 挂起,引用终端掉线或用户退出而引发 |
INT(2) | 中断,通常按下 Ctrl+C 引发 |
QUIT(3) | 退出,通常按下 Ctrl+\ 引发 |
ABRT(6) | 中止,通常因某些严重错误引发 |
ALRM(14) | 报警,通常用来处理超时 |
TERM(15) | 终止,通常在系统关机时发送 |
示例:
#!/bin/sh
trap "echo you can not exit" INT
while :
do
echo hello
sleep 1
done
echo shell never get here
exit 0
该示例中我们接收 INT 信号,并接收信号后打印出一句话。
运行该脚本后,按Ctrl+C,脚本无法结束,并会打印出 you can not exit