脚本信号捕捉技术
SIGHUP:挂起进程[1]
SIGING:来自键盘的终端ctrl+c[2]
SIGQUIT:从键盘退出ctrl+\[3]
SIGKILL:无条件终止[9]
当apache端口改变之后,kill -HUP 3349或者kill -1 3349或者kill -HUP httpd可以不需要重启apache
#!/bin/bash
#signal.sh
#信号测试
while :
do
echo 'aaa';
done
捕捉到一个信号后,它可能会采取下面三种操作之一:
1、不采取任何行动,由系统来处理
2、捕捉该信号,但忽略它
3、捕捉该信号,但采取相应的行动
kill -9是无条件杀到进程
trap信号捕捉
trap命令使用
trap "function" signal
1)signal为接受到的信号
2)function为执行函数
常见行动
1)清除临时文件
2)忽略该信号
3)询问用户是否中止脚本执行
[trap信号捕捉-1]
#!/bin/bash
#signal.sh
#信号捕捉
trap 'myfunc' 2 #捕捉到kill操作
function myfunc(){
echo '你正在按ctrl+c键,程序无法中止,抱歉'
}
i=0
while :
do
let i++
echo $i
sleep 1
done
[trap信号捕捉-2]
#!/bin/bash
#signal.sh
#信号捕捉
#与用户发生交互
trap 'myfunc' 2 #捕捉到kill操作
function myfunc(){
read -p '你确定中止该进程吗?yes or no :' s
case $s in
'yes')
exit;
'no')
;;
'*')
myfunc
;;
esac
}
i=0
while :
do
let i++
echo $i
sleep 1
done