shell进阶--信号,finish函数

1.各种信号

1信号SIGHUP:hub 进程重新读取对应的配置文件(不重启计算机,就可以生效)
2信号SIGINT :中断------ctrl+c 就会触发该信号int
3信号SIGQUIT:从键盘上杀死进程的信号 ctrl+\ 也就是发送QUIT信号(只对终端内的进程有效)
9信号SIGKILL:必杀信号,强制杀死进程(无法捕捉信号),KILL信号不做善后,例如:临时清理文件,刷新磁盘等
15信号SIGTERM:终止进程,(安全),有善后
18信号SIGCONT:让进程从stopped状态恢复—进入就绪队列
19信号SIGSTOP:必停信号,让进程处于stopped状态,为shell提供
20信号SIGTSTP:让进程处于stopped状态,相当于ctrl+z就是发送tstp信号
21信号SIGTTIN:后台进程读取终端数据时,(默认方式–终止该后台进程)
22进程SIGTTOU:后台进程输出数据时(默认方式–终止该后台进程)
17信号SIGCHLD:子进程终止时,内核发送信号给父进程(被省略)
10信号SIGUSR1和12SIGUSR2:默认是提供给用户自定义的信号

2.信号捕捉trap

Trap捕获某个信号,不去做原有的操作,只操作自己指定的操作

trap '触发指令' 信号进程收到系统发出的指定信号后,将执行自定义指令,而不会执行原操作
trap '' 信号忽略信号的操作
trap '-' 信号恢复原信号的操作
trap -p列出自定义信号操作
trap finish EXIT 当脚本退出时,执行finish函数

例如:
捕获2信号(int)
Int 就是2信号
单引号引起来—触发指令
在这里插入图片描述
按ctrl+c就会触发指令
在这里插入图片描述
Trap ‘’ 信号 不会执行任何操作
在这里插入图片描述
在这里插入图片描述
Trap ‘’ 信号 将信号还原
在这里插入图片描述
在这里插入图片描述

3.finish函数

脚本执行一半就退出----就会产生一些垃圾文件
为了避免垃圾文件的产生
所以就用finish函数 及exit命令
用这种方式处理异常退出
Finish中写一些清理临时文件的操作

Trap finish exit 当执行exit退出时,就会触发finish函数
Exit退出(无论什么退出)都执行finish
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实例

#!/bin/bash
trap 'echo “signal:SIGINT"' int
trap -p
for((i=0;i<=10;i++))
do
 sleep 1
 echo $i
done
trap '' int
trap -p
for((i=11;i<=20;i++))
do
 sleep 1
 echo $i
done
trap '-' int
trap -p
for((i=21;i<=30;i++))
do
 sleep 1
 echo $i
done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值