原文地址:http://blog.sina.com.cn/s/blog_62eb16bb01014dbh.html

 一. trap捕捉到信号之后,可以有三种反应方式:

  (1)执行一段程序来处理这一信号

  (2)接受信号的默认操作

  (3)忽视这一信号

 二. trap对上面三种方式提供了三种基本形式:

  第一种形式的trap命令在shell接收到signal list清单中数值相同的信号时,将执行双

  引号中的命令串。

  trap 'commands' signal-list

  trap "commands" signal-list

  为了恢复信号的默认操作,使用第二种形式的trap命令:

  trap signal-list

  第三种形式的trap命令允许忽视信号

  trap " " signal-list

 注意:

  (1) 对信号11(段违例)不能捕捉,因为shell本身需要捕捉该信号去进行内存的转储。

  (2) 在trap中可以定义对信号0的处理(实际上没有这个信号), shell程序在其终止(如执行exit语句)时发出该信号。

  (3) 在捕捉到signal-list中指定的信号并执行完相应的命令之后, 如果这些命令没有将shell程序终止的话,shell程序将继续执行收到信号时所执行的命令后面的命令,这样将很容易导致shell程序无法终止。

  另外,在trap语句中,单引号和双引号是不同的,当shell程序第一次碰到trap语句时,将把commands中的命令扫描一遍。此时若commands是用单引号括起来的话,那么shell不会对commands中的变量和命令进行替换, 否则commands中的变量和命令将用当时具体的值来替换。

信号说明
HUP(1)    挂起,通常因终端掉线或用户退出而引发
INT(2)    中断,通常因按下Ctrl+C组合键而引发
QUIT(3)  退出,通常因按下Ctrl+组合键而引发
ABRT(6)  中止,通常因某些严重的执行错误而引发
ALRM(14)  报警,通常用来处理超时
TERM(15)  终止,通常在系统关机时发送

linux shell trap的使用相关推荐

  1. linux shell trap捕捉信号 附信号表 SIGTERM SIGKILL

    trap捕捉信号有三种形式 第一种: trap "commands" signal-list 当脚本收到signal-list清单内列出的信号时,trap命令执行双引号中的命令. ...

  2. Bash For Loop Examples for Your Linux Shell Scripting--ref

    There are two types of bash for loops available. One using the "in" keyword with list of v ...

  3. Linux Shell高级技巧(一)

    一.将输入信息转换为大写字符后再进行条件判断: 我们在读取用户的正常输入后,很有可能会将这些输入信息用于条件判断,那么在进行比较时,我们将不得不考虑这些信息的大小写匹配问题.       /> ...

  4. Linux Shell高级技巧(五)

    二十五.通过FTP下载指定的文件: 相比于手工调用FTP命令下载文件,该脚本提供了更为方便的操作方式.       /> cat > test25.sh       #!/bin/sh   ...

  5. Linux Shell高级技巧(四)

    十九.将文件的输出格式化为指定的宽度: 在这个技巧中,不仅包含了如何获取和文件相关的详细信息,如行数,字符等,而且还可以让文件按照指定的宽度输出.这种应用在输出帮助信息.License相关信息时还是比 ...

  6. 《Linux Shell编程从初学到精通(第2版)》pdf

    下载地址:网盘下载 内容简介 编辑 shell是用户与内核进行交互操作的一种接口,是linux最重要的软件之一.目前最流行的shell称为bash shell,bash shell脚本编程以其简洁.高 ...

  7. 【系统性学习】Linux Shell常用命令

    本文重点是脚本开发时会常用的命令和一些提高效率的高频系统操作命令,其他命令(主要是运维方面的,如网络操作.硬件操作.文件打包等)后续补充. 该文配合[系统性学习]Linux Shell易忘重点整理(会 ...

  8. linux 脚本编写基本命令,Linux Shell命令行及脚本编程实例详解

    <Linux典藏大系:Linux Shell命令行及脚本编程实例详解>共15章,分为两篇.主要内容包括:Linux 及Linux Shell简介.初识Linux Shell.常用Shell ...

  9. linux shell之文件锁

    2019独角兽企业重金招聘Python工程师标准>>> 经常在 shell 脚本里要阻止其它进程,比如 msmtp 自带的mail queue 脚本,这个脚本的互斥做法是不正确的,下 ...

最新文章

  1. left join(左联接) left join(左联接) left join(左联接)
  2. ubuntu如何实现双屏显示(转)
  3. oracle子查询子查询,Oracle 单行子查询和多行子查询
  4. [leetcode]83.删除排序链表中的重复元素
  5. linux查看openssh和openssl版本
  6. MAC启动redis的目录
  7. java -锁(公平、非公平锁、可重入锁【递归锁】、自旋锁)
  8. android adjust,android adjustresize adjustpan着名的问题
  9. Java数组去重的方法
  10. 【渝粤教育】国家开放大学2018年春季 0692-21T化工设备机械基础 参考试题
  11. java string是final_关于java:String和Final
  12. 三菱plc 毕设_三菱plc编程上传/下载程序步骤
  13. tmdb数据集_数据科学第2部分的数据管道tmdb api数据搜寻器
  14. Java考试奥迪车代码_奥迪工程师车型代码
  15. Windows Server 2016域控服务器如何取消密码复杂性规则
  16. 薅羊毛php源码,薅羊毛软件-抢福袋源码分享
  17. 人机融合智能:人工智能3.0。道翰天琼认知智能机器人平台API接口大脑为您揭秘
  18. 第一次用VNPY,通过仿真测试,踩过千万坑,我太难了~~~~~~
  19. 八核版三星Galaxy S4(I9500)root教程
  20. 苹果小程序闪退 camera组件

热门文章

  1. 要找工作了,拿什么拯救你——我的能力
  2. Kalileo中DiagramGroup布局
  3. 牛客 - Prize(bitset优化暴力)
  4. CodeForces - 1341E Nastya and Unexpected Guest(01bfs)
  5. POJ - 1011 Sticks(dfs+剪枝)(好题!!)
  6. HDU - 3085 Nightmare Ⅱ(双向bfs)
  7. UVA307 Sticks小木棍
  8. HDU4382(特殊的矩阵连乘)
  9. PE文件结构详解(四)PE导入表
  10. STL 之find,find_if,find_end,find_first_of