shell脚本基础(14)

              脚本信号捕捉技术
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
 

你可能感兴趣的:(shell)