---- 在Unix系统中,当检测到一个异常的内部状态,或者硬件及外部设备发出请求,或者执行某些指令时,将会向系统中的进程发出信号报告事件产生。当进程捕获到这些信号后,系统便转去执行预先设定的默认程序,完成指定的动作;这些预先设定的默认程序称之为信号的系统陷阱。
----在shell中,使用trap语句为信号设置新的陷阱。当shell 捕获到一个信号时(信号11除外,因为shell本身要利用这个信号进行内存分配),它将这个信号传递给所有当前正在执行的程序(父程序和子程序),并分别执行父程序和子程序中已设置的信号陷阱。一旦陷阱程序执行结束,便返回中断点,继续执行原来的程序流程
Trap语句在扑捉到信号后可以进行一下三种处理:
1)执行一段程序来处理这个信号
trap 'commands' signal-list
trap "commands" signal-list
commands 可以是分号分隔的命令行,双引号表示会进行变量替换,单引号不会考虑替换,也可以直接指定方法名;
signal-list 当有多个信号时可以指定一个数组,必须用双引号括起: TRAP_SINGAL="1 2 3 15"
2)忽略这个信号
trap " " signal-list
3)接受信号的默认操作
trap signal-list
可以用命令kill -l来查看系统的所有信号:
[root