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

发布时间:2020-02-13编辑:脚本学堂
本文介绍下,有关shell中trap的应用实例,有需要的朋友参考下。

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

复制代码 代码示例:

#!/bin/bash
#edit by www.jb200.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对其没影响。