trap用来出来shell脚本接收各种中断信号使用。具体原理请百度之。当想在shell里面针对同个信号不同的函数有不同的处理手法时,可如下写法:
- #!/bin/bash
- 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对其没影响
阅读(4713) | 评论(0) | 转发(3) |