当前位置: > shell编程 >

shell中trap实例分享(信号捕获)

时间:2014-07-09 13:28来源:linux.it.net.cn 作者:IT网

trap可以用在shell脚本接收各种中断信号。
在shell中针对同个信号不同的函数有不同的处理手法时,可参考如下用例:
 

复制代码代码示例:

#!/bin/bash
#edit by www.jbxue.com
trap "_reload $1" 1
_f1(){
  echo $$
  while((1))
  do
    date
    sleep 0.5
  done
}

_f2(){
  echo $$
  while((1))
  do
    uptime
    sleep 0.5
  done
}

_reload(){
   [ $1 -eq 2 ]&&echo $$
}

case $1 in
   1)
     _f1;;
   2)
     _f2;;
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对其没影响。

(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容