tarp陷阱触发
在脚本的执行过程中,有时候希望能实时处理系统传来的信号,如,用户按ctrl+c ,处理的方法分为2种,接受信号或忽略信号,前者
通常会对信号安排执行特定的命令,后者想避免意外的状况干扰脚本的运行,这种能扑捉特定信息,并作出反应的机制,称为trap陷阱触发

trap的运用和系统的信号有关

信号
进程编号PID
unix-like系统,各进程之间,可用信号做沟通,每个进程都有一个独一无二的代码,称为PID,(进程编号),在命令语法中传递信号的
对象就是进程代码
列出内存中所有的进程
如os aux ;ps -ef 等

传送信号的方法
1:使用内置命令kill,可传送信号给进程
kill -信号 进程编号

kill -s 信号 进程编号

kill -n 信号 进程编号
如果省略信号,则默认传送sigterm给进程

########常用信号####################
HUP     1    终端断线
INT       2    中断(同 Ctrl + C)
QUIT    3    退出(同 Ctrl + \)
TERM    15    终止
KILL      9    强制终止
CONT   18    继续(与STOP相反, fg/bg命令)
STOP    19    暂停(同 Ctrl + Z)


tarp的运用
语法1:trap “触发指令” 信号串行
解释:向shell注册信号,只要系统产生此特定的信号,(意思就是掉到我们安排的陷阱中)trap指令就会触发,并执行命令中的触发指令
例子:
trap `echo "收到asdf信号"` ABRT
[root@centos129 tmp]# kill -ABRT $$
-bash: 收到asdf信号: command not found


向shell中注册ASDF信号,只要系统出现ASDF信号,就会执行echo命令,


trap 语法2
trap - 信号串行
如果trap的语法中没有触发指令,而是-或空白,则可恢复信号串行原本的作用,
trap ‘-’ ARRT

trap语法3
trap ‘’ 信号串行
忽略系统发出的信号串行
如果触发指令的部分是空字符串,那么shell会忽略这些信号串行,不做任何反应
例子:
trap '' INT #忽略使用者按下ctrl+c组合键


trap的语法4
trap -p
列出目前trap向shell注册的信号列表