Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1906502
  • 博文数量: 498
  • 博客积分: 2078
  • 博客等级: 大尉
  • 技术积分: 1645
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-18 22:43
个人简介

安大

文章分类

全部博文(498)

文章存档

2017年(1)

2016年(2)

2015年(21)

2014年(90)

2013年(101)

2012年(267)

2011年(16)

分类:

2012-03-21 13:46:12

原文地址: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对其没影响

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