trap
主要用途
- 用于指定在接收到信号后将要采取的动作。
- 脚本程序被中断时执行清理工作。
-p 显示与每个信号关联的trap命令。
参数
arg:接收到信号时执行的命令。
signal_spec:信号名称或信号名称对应的数字。
如果表达式执行结果为成功时返回0,当参数 signal_spec
没有指定有效值时返回1。
关于信号
在有些情况下,我们不希望自己的shell脚本在运行时刻被中断,比如说我们写得shell脚本设为某一用户的默认shell,使这一用户进入系统后只能作某一项工作,如数据库备份, 我们可不希望用户使用 Ctrl+C 等方法进入到shell状态做我们不希望做的事情。这便用到了信号处理。
以下是一些你可能会遇到的常见信号:
当shell收到 HUP INT PIPE QUIT TERM
这几个命令时,当前执行的程序会执行 。
trap "rm -f $WORKDIR/work1 $WORKDIR/dataout; exit" 2
执行shell程序,如果程序接收信号为2,那么这两个文件 (work1 和 dataout) 将被自动删除。
添加信号1 SIGHUP
:
如果陷阱列出的命令是空的,指定的信号接收时,将被忽略:
$ trap '' 2
当你改变了收到信号后采取的动作,你可以省略第一个参数来重置到默认行为。
trap -l
等价于执行kill -l
。- 发送信号请查看
kill
命令。 - 该命令是bash内建命令,相关的帮助信息请查看 命令。
- 建议您阅读以下参考资料来深入了解该命令: