您当前的位置:首页 > 计算机 > 编程开发 > Shell

Linux Shell移除(重置)信号捕获

时间:03-05来源:作者:点击数:

如果我们在脚本中应用了捕获,我们通常会在脚本的结尾处,将接收到信号时的行为处理重置为默认模式。重置(移除)捕获的语法如下所示:

$ trap - signal [ signal ... ]

从上述语法中可以看出,使用破折号作为 trap 语句的命令参数,就可以移除信号的捕获。

下面,我们以脚本 trap_reset.sh为例,来学习如何在脚本中移除先前定义的捕获。其脚本的内容类似如下所示:

#!/bin/bash

#定义函数cleanup
function cleanup {
    #如果变量 msgfile 所指定的文件存在
    if [[ -e $msgfile ]]; then
        #将文件重命名(或移除)
        mv $msgfile $msgfile.dead
    fi

    exit
}

#捕获INT和TERM信号
trap cleanup INT TERM

#创建一个临时文件
msgfile=`mktemp /tmp/testtrap.$$.XXXXXX`

#通过命令行向此临时文件中写入内容
cat > $msgfile

#接下来,发送临时文件的内容到指定的邮件地址,你自己完善此部分代码
#send the contents of $msgfile to the specified mail address...

#删除临时文件
rm $msgfile

#移除信号INT和TERM的捕获
trap - INT TERM

上述脚本中,在用户已经完成了发送邮件的操作之后,临时文件会被删除。这时,因为已经不再需要清理操作,我们可以重置信号的捕获到默认状态,所以我们在脚本的最后一行重置了 INT 和 TERM 信号的捕获。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门