Chinaunix首页 | 论坛 | 博客
  • 博客访问: 353910
  • 博文数量: 49
  • 博客积分: 817
  • 博客等级: 军士长
  • 技术积分: 496
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-16 19:05
文章分类

全部博文(49)

文章存档

2014年(6)

2013年(7)

2012年(8)

2011年(28)

分类: LINUX

2011-11-04 22:29:46

trap是一个shell内建命令,用于指定在接收到信号后将要采取的动作,常见的用途是在脚本程序被中断时完成清理工作。比如,按Ctrl+C会使脚本终止执行,实际上系统发送了SIGINT信号给脚本进程,SIGINT信号的默认处理方式就是退出程序。如果要在Ctrl+C不退出程序,那么就得使用trap命令来指定一下SIGINT的处理方式了。trap命令不仅仅处理Linux信号,还能对脚本退出(EXIT)、调试(DEBUG)、错误(ERR)、返回(RETURN)等情况指定处理方式。

trap命令的参数分为两部分,前一部分是接收到指定信号时将要采取的行动,后一部分是要处理的信号名。

trap command signal

它有三种形式分别对应三种不同的信号回应方式。

第一种:
trap "commands" signal-list
当脚本收到signal-list清单内列出的信号时,trap命令执行双引号中的命令。

第二种:
trap signal-list
trap不指定任何命令,或者是 "-" ,接受信号的默认操作,默认操作是结束进程的运行。

第三种:
trap " " signal-list
trap命令指定一个空命令串,允许忽视信号,我们用到的就是这一种。

如果要重置某个信号的处理条件到其默认值,只需简单的将command设置为-或者留空。如果要忽略某个信号,就把command设置为空字符串 ""。一个不带参数的trap命令将列出当前设置的信号及其行动的清单。

※ 脚本程序通常是以从上到下的顺序解释执行的,所以必须在你想保护的那部分代码以前指定trap命令。

例:trap "echo no way" 1 2 3 9
     指定了命令,如果遇到 HUP INT QUIT KILL 信号,则执行 echo no way 命令
trap -p
     显示当前trap设置
trap "" INT QUIT
     遇到 INT 和 QUIT 信号,则忽略,什么也不做
trap 1 2 3 9 
     没有指定命令部分,恢复 HUP INT QUIT KILL 这些信号设置;


阅读(1840) | 评论(0) | 转发(0) |
0

上一篇:linux singal

下一篇:rsync 命令参数

给主人留下些什么吧!~~