当前位置: 首页 > news >正文

shell_66.Linux修改或移除信号捕获

修改或移除信号捕获
要想在脚本中的不同位置进行不同的信号捕获处理,只需重新使用带有新选项的 trap 命令即可:

$ cat trapmod.sh 
#!/bin/bash 
#Modifying a set trap 
# 
trap "echo ' Sorry...Ctrl-C is trapped.'" SIGINT 
# 
count=1 
while [ $count -le 3 ] 
do echo "Loop #$count" sleep 1 count=$[ $count + 1 ] 
done 
# 
trap "echo ' I have modified the trap!'" SIGINT 
# 
count=1 
while [ $count -le 3 ] 
do echo "Second Loop #$count" sleep 1 count=$[ $count + 1 ] 
done 
# 
exit 
$ 


修改了信号捕获之后,脚本处理信号的方式就会发生变化。但如果信号是在捕获被修改前接
收到的,则脚本仍然会根据原先的 trap 命令处理该信号。

$ ./trapmod.sh 
Loop #1 
^C Sorry...Ctrl-C is trapped. 
Loop #2 
Loop #3 
Second Loop #1 
Second Loop #2 
^C I have modified the trap! 
Second Loop #3 
$ 

也可以移除已设置好的信号捕获。在 trap 命令与希望恢复默认行为的信号列表之间加上两个连字符即可。

$ cat trapremoval.sh 
#!/bin/bash 
#Removing a set trap 
# 
trap "echo ' Sorry...Ctrl-C is trapped.'" SIGINT 
# 
count=1 
while [ $count -le 3 ] 
do echo "Loop #$count" sleep 1 count=$[ $count + 1 ] 
done 
# 
trap -- SIGINT 
echo "The trap is now removed." 
# 
count=1 
while [ $count -le 3 ] 
do echo "Second Loop #$count" sleep 1 count=$[ $count + 1 ] 
done 
# 
exit 
$ 


移除信号捕获后,脚本会按照默认行为处理 SIGINT 信号,也就是终止脚本运行。但如果信号是在捕获被移除前接收到的,
那么脚本就会按照原先 trap 命令中的设置进行处理:

$ ./trapremoval.sh 
Loop #1 
Loop #2 
^C Sorry...Ctrl-C is trapped. 
Loop #3 
The trap is now removed. 
Second Loop #1 
Second Loop #2 
^C 
$

http://www.lryc.cn/news/219258.html

相关文章:

  • 5 ip的分配
  • 【Python机器学习】零基础掌握StackingClassifier集成学习
  • Spring Boot 常见面试题
  • 利用大语言模型(LLM )提高工作效率
  • [Linux打怪升级之路]-信号的产生
  • Python教程---Python基础语法
  • echarts 画散点图, x周,y周在指定位置标志一下
  • Unity地面交互效果——3、曲面细分基础知识
  • NOIP 赛前模拟总结(第一周)
  • stm32 DMA
  • 厦门万宾科技智能井盖监测仪器的作用如何?
  • 【带头学C++】----- 三、指针章 ---- 3.5 字符串与指针
  • 二十三种设计模式全面解析-深入解析桥接模式:解锁软件设计的灵活性
  • Ansible中的角色使用
  • C通过指针访问数组元素
  • 程序员成长树
  • 数字化时代,数据仓库是什么?有什么用?
  • android NetworkMonitor和ConnectivityService记录
  • Technology strategy Pattern 学习笔记1-Context: Architecture and Strategy
  • 数据结构-顺序表
  • 数据结构与算法 | 第三章:栈与队列
  • oracle查询数据库内全部的表名、列明、注释、数据类型、长度、精度等
  • 数据可视化:折线图
  • Python语言_matplotlib包_共80种--全平台可用
  • OpenFeign 的超时重试机制以及底层实现原理
  • redis安装
  • VM虚拟机逆向 --- [NCTF 2018]wcyvm 复现
  • 2024天津理工大学中环信息学院专升本机械设计制造自动化专业考纲
  • 华为OD机试 - 服务失效判断 - 逻辑分析(Java 2023 B卷 200分)
  • 刚入职因为粗心大意,把事情办砸了,十分后悔