Linux中trap命令怎么用
这篇文章将为大家详细讲解有关Linux中trap命令怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
Linux常用命令trap命令主要用于指定在接收到信号后将要采取的动作、脚本程序被中断时执行清理工作。
trap捕捉信号和其他事件并执行命令。
概要trap[-lp][[arg]signal_spec...]选项
-l打印信号名称以及信号名称对应的数字。-p显示与每个信号关联的trap命令。参数
arg:接收到信号时执行的命令。
signal_spec:信号名称或信号名称对应的数字。
返回值如果表达式执行结果为成功时返回0,当参数 signal_spec 没有指定有效值时返回1。
关于信号信号是一种进程间通信机制,它给应用程序提供一种异步的软件中断,使应用程序有机会接受其他程序活终端发送的命令(即信号)。应用程序收到信号后,有三种处理方式:忽略,默认,或捕捉。进程收到一个信号后,会检查对该信号的处理机制。如果是SIG_IGN,就忽略该信号;如果是SIG_DFT,则会采用系统默认的处理动作,通常是终止进程或忽略该信号;如果给该信号指定了一个处理函数(捕捉),则会中断当前进程正在执行的任务,转而去执行该信号的处理函数,返回后再继续执行被中断的任务。
在有些情况下,我们不希望自己的shell脚本在运行时刻被中断,比如说我们写得shell脚本设为某一用户的默认shell,使这一用户进入系统后只能作某一项工作,如数据库备份, 我们可不希望用户使用 Ctrl+C 等方法进入到shell状态做我们不希望做的事情。这便用到了信号处理。
以下是一些你可能会遇到的常见信号:
当shell收到 HUP INT PIPE QUIT TERM 这几个命令时,当前执行的程序会执行 exit 1。
[root@pcroot]$trap"exit1"HUPINTPIPEQUITTERM1 清理临时文件
下面展示了如果有人试图从终端中止程序时,如何删除文件然后退出:
trap"rm-f$WORKDIR/work1$WORKDIR/dataout;exit"2
执行shell程序,如果程序接收信号为2,那么这两个文件 (work1 和 dataout) 将被自动删除。
添加信号1 SIGHUP:
$trap"rm$WORKDIR/work1$WORKDIR/dataout;exit"122 忽略信号
如果陷阱列出的命令是空的,指定的信号接收时,将被忽略:
$trap''2
忽略多个信号:
$trap''123153 重置陷阱
当你改变了收到信号后采取的动作,你可以省略第一个参数来重置到默认行为。
$trap12注意
trap -l 等价于执行 kill -l。
发送信号请查看 kill 命令。
该命令是bash内建命令,相关的帮助信息请查看 help 命令。
关于“Linux中trap命令怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。