Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2809700
  • 博文数量: 587
  • 博客积分: 6356
  • 博客等级: 准将
  • 技术积分: 6410
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-23 10:54
个人简介

器量大者,福泽必厚

文章分类

全部博文(587)

文章存档

2019年(3)

2018年(1)

2017年(29)

2016年(39)

2015年(66)

2014年(117)

2013年(136)

2012年(58)

2011年(34)

2010年(50)

2009年(38)

2008年(16)

分类: LINUX

2010-07-17 11:27:02

   为公司书写过一个灵活的svn switch脚本(有一个build.prop文件来配置common customtags flextag的版本 )。我书写shell脚本有个习惯,喜欢在处理过程中生成中间文件。在程序运行结束时删除掉它们!但这样有个缺点,如果人为的终止(ctrl+c或kill)脚本。则会看到中间文件。感觉此脚本不整洁!老想着在脚本中加入一个捕获信号的语句以处理掉中间生成的文件。
下面是一个简单的例子:

[xliu@qht124 ~]$ cat trap.sh
#!/bin/sh
trap 'rm -f ~/d.java &&echo "D.java has been deleted"' INT
touch ~/d.java
sleep 180
[xliu@qht124 ~]$

1:脚本正常运行过程如下:
[xliu@qht124 ~]$ ./trap.sh 
##在等待(因为有sleep 180)
[xliu@qht124 ~]$ ls  #此为trap.sh运行完的显示
d.java  trap.sh      
2:脚本运行过程中被我ctrl+c终止:

[xliu@qht124 ~]$ ./trap.sh
D.java has been deleted
[xliu@qht124 ~]$ ls
trap.sh
[xliu@qht124 ~]$


3:忽略INT变量

sleep.sh内容如下:

trap  '' INT   将ctrl+c对应的INT变量取消!这时运行./sleep.sh后,会一直sleep 120 秒,按下ctrl+c不起作用!

4:恢复INT信号量

这时运行./sleep.sh后,按下ctrl+c后,立即将该进程终止!

5:特别注意STOP和KILL两个信号量无法用trap捕捉,也无法忽略!


留为笔记!
阅读(1299) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~