ITPub博客

首页 > Linux操作系统 > Linux操作系统 > trap 简介

trap 简介

原创 Linux操作系统 作者:kinglin_zy 时间:2011-07-08 13:39:14 0 删除 编辑
CODE

信号检测:
在编写s h e l l脚本时,只需关心信号1、2、3和1 5。当脚本捕捉到一个信号后,它可能会采
取下面三种操作之一:
1) 不采取任何行动,由系统来进行处理。
2) 捕获该信号,但忽略它。
3) 捕获该信号,并采取相应的行动。
大多数的脚本都使用第一种处理方法,如果想要采取另外两种处理方法,必须使用t r a p命令。
t r a p可以使你在脚本中捕捉信号。该命令的一般形式为:
trap name signal(s)
其中,n a m e是捕捉到信号以后所采取的一系列操作。实际生活中, n a m e一般是一个专门
用来处理所捕捉信号的函数。N a m e需要用双引号(“ ”)引起来。S i g n a l就是待捕捉的信号。
脚本在捕捉到一个信号以后,通常会采取某些行动。最常见的行动包括:
1) 清除临时文件。
2) 忽略该信号。
3) 询问用户是否终止该脚本的运行。
下表列出了一些最常见的t r a p命令用法:
trap "" 2 3 忽略信号2和信号3,用户不能终止该脚本
trap"commands" 2 3 如果捕捉到信号2或3,就执行相应的c o m m a n d s命令
trap 2 3 复位信号2和3,用户可以终止该脚本
也可以使用单引号(‘’)来代替双引号(“”);其结果是一样的。


p.s:
信号0,就是空信号。
没有一个信号其编号为0。对信号编号0有特殊的应用。P O S I X . 1将此种信号编号值称为空信号。该信号为“退出s h e l l”信号。发出信号0,只要从命令行键入e x i t,或在一个进程或命令行中使用< C T R L - D >即可

信号 信号名 含义
1 S I G H U P 挂起或父进程被杀死
2 S I G I N T 来自键盘的中断信号,通常是< C T R L - C >
1 5 S I G T E R M 软件终止(缺省杀进程信号)

CODE

解释:
mklv脚本中:
trap 'cleanup' 0 1 2 15
这里在做mklv的操作中:如果shell捕捉到用户退出(信号0,做这个操作应该没有用户会退出吧 :P ,可能是捕捉用户终端意外退出,如:掉电) or 进程挂起(信号1) or 用户中断(信号2) or 进程终止(信号15),就调用cleanup命令,取消本次操作
 
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/781883/viewspace-701683/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-09-22

  • 博文量
    58
  • 访问量
    67083