Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3926810
  • 博文数量: 421
  • 博客积分: 685
  • 博客等级: 上将
  • 技术积分: 3670
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-18 14:20
文章分类

全部博文(421)

文章存档

2012年(5)

2011年(52)

2010年(83)

2009年(67)

2008年(65)

2007年(149)

分类: Python/Ruby

2012-03-20 21:11:07

trap用来出来shell脚本接收各种中断信号使用。具体原理请百度之。当想在shell里面针对同个信号不同的函数有不同的处理手法时,可如下写法:

点击(此处)折叠或打开

  1. #!/bin/bash
  2. trap "_reload $1" 1
  3. _f1(){
  4.   echo $$
  5.   while((1))
  6.   do
  7.     date
  8.     sleep 0.5
  9.   done
  10. }

  11. _f2(){
  12.   echo $$
  13.   while((1))
  14.   do
  15.     uptime
  16.     sleep 0.5
  17.   done
  18. }

  19. _reload(){
  20.    [ $1 -eq 2 ]&&echo $$
  21. }

  22. case $1 in
  23.    1)
  24.      _f1;;
  25.    2)
  26.      _f2;;
  27. esac

上述脚本假设命名为test.sh,实现2个函数,_t1和_t2,分别用参数1和2调用:
test.sh 1
test.sh 2

脚本接受kill -1 test.sh_pid时,执行_reload函数,判断$1等于2时,输出进程号,否则没动作,哈哈
也就是说只有执行test.sh 2时,接收到kill -1信号才会有动作,否则没动作。
test.sh 1时,kill -1对其没影响

阅读(4719) | 评论(0) | 转发(3) |
给主人留下些什么吧!~~