Chinaunix首页 | 论坛 | 博客
  • 博客访问: 113155
  • 博文数量: 38
  • 博客积分: 330
  • 博客等级: 一等列兵
  • 技术积分: 270
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-08 23:30
文章分类

全部博文(38)

文章存档

2012年(36)

2011年(2)

我的朋友

分类:

2012-03-22 08:44:55

原文地址:shell的trap经典实例 作者:yuhuohu

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对其没影响

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