用途说明
trap是一个shell内建命令,它用来指定信号的处理方式,例如:
使用Ctrl +c
会是一个非守护进程中之执行,实际上是给进程发送了一个SIGINT
信号,该信号的默认处理方式就是退出程序。如果想让程序在退出之前执行些额外的操作,或者不退出程序等操作就可以使用trap
命令来对指定的信号做处理。
trap
命令不仅可以处理Linux信号,还可以对脚本的退出(EXIT
)、调试(DEBUG
)、错误(ERR
)、返回(RETURN
)等情况做处理。
参数说明
trap [-lp] [[arg] sigspec ...]
格式:
-
trap "commands" signals
当shell接收到signals指定的信号时,执行commands命令。
-
trap signals
没有指定命令部分,那么就将信号处理复原。
-
trap "" signals
忽略信号signals
-
trap -l
列出所有信号
-
trap -p
打印当前trap 设置
-
trap "commands" EXIT|DEBUG|ERR|RETURN
脚本退出|脚本执行打印调试信息|命令出错,退出码非0|函数或调用其他脚本返回时
执行commands 指定命令
应用场景
- 当执行脚本后需要用户做一些固定操作时,例如ATM机,避免用户发送关闭信号来关闭脚本,影响程序的正常关闭,避免用户夺权问题,使用trap命令来忽略用户发送的中断信号请求,以达到限制用户操作避免安全问题。