`
luotuoass
  • 浏览: 640691 次
文章分类
社区版块
存档分类
最新评论

在shell中捕捉信号的trap命令

阅读更多

一. 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中的变量和命令将用当时具体的值来
替换。


  (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中的变量和命令将用当时具体的值来
替换。

分享到:
评论

相关推荐

    Linux系统下trap命令在Shell编程中的应用.pdf

    Linux系统下trap命令在Shell编程中的应用.pdf

    snmp trap命令接收软件

    windows平台下,用于接收snmp协议的trap消息的小软件,可以测试你编写的trap命令是否发送成功了

    trapCommand

    rap是一个shell内建命令,它用来在脚本中指定信号如何处理。比如,按Ctrl+C会使脚本终止执行,实际上系统发送了SIGINT信号给脚本进程,SIGINT信号的默认处理方式就是退出程序。如果要在Ctrl+C不退出程序,那么就得...

    shell编程和unix命令

    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 ...

    trap命令 指定采取的动作

    trap命令用于指定在接收到信号后将要采取的动作,常见的用途是在脚本程序被中断时完成清理工作。当shell接收到sigspec指定的信号时,arg参数(命令)将会被读取,并被执行。 语法格式:trap [参数] 常用参数: -l...

    shell 编程指南pdf

    2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 ...

    shell 编程(中文)[pdf]

    026_创建以日期命名的文件和临时文件_信号_trap命令以及如何捕获信号_eval命令_logger命令.pdf 027_脚本例子_pingall_backup_gen_del.lines_acces_deny_logroll_nfsdown.pdf 028_rcN.d_运行级别脚本编辑.pdf 029_cgi...

    Linux shell脚本 精华中文版

    026_创建以日期命名的文件和临时文件_信号_trap命令以及如何捕获信号_eval命令_logger命令.pdf 027_脚本例子_pingall_backup_gen_del.lines_acces_deny_logroll_nfsdown.pdf 028_rcN.d_运行级别脚本编辑.pdf 029...

    LINUX与UNIX SHELL编程指南(很全)

    2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 ...

    Unix 命令全集

    shell 命令 show 命令 showmount 命令 shutacct 命令 shutdown 命令 size 命令 skulker 命令 slattach 命令 sleep 命令 slibclean 命令 sliplogin 命令 slocal 命令 smcaprop 命令 smdefca 命令 smdemon.cleanu 命令...

    trap receiver(trap模拟接收器)

    NET-SNMP代理开发中,此软件可模拟接收trap.方便TRAP的调试(内含使用相关说明)

    新版Linux Shell编程实训(全)20170518.docx

    8.1.1 Shell中函数的定义 147 8.1.2 函数参数 150 任务8.2 Shell案例 151 8.2.1 指定多个文件的行数 151 8.2.2 当前目录的所有文件 153 练习(每题50分,共计100分) 156 项目九 Shell输入/输出重定向 158 [学习目标...

    跟老男孩学Linux运维:Shell编程实战

    《跟老男孩学Linux运维:Shell编程实战》第五部分为第17章~第20章,着重讲解Linux信号及trap命令的企业应用实践、Expect自动化交互式程序的应用实践、贯穿全书技术的面试题和企业实战案例,以及子Shell知识。

    LINUX与UNIX SHELL编程指南 高清PDF

    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 shell...

    绝版经典《Linux与UNIX Shell编程指南》

    19.6 在shell中使用函数 204 19.7 创建函数文件 204 19.8 定位文件 205 19.9 检查载入函数 205 19.10 执行shell函数 205 19.10.1 删除shell函数 206 19.10.2 编辑shell函数 206 19.10.3 函数举例 207 19.10.4 将函数...

    trap转发器实现trap转发

    接收trap并把trap信息发转发到多个地址

    shell教程-30章,下了之后会让你大吃一惊,相当好

    2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 ...

    跟老男孩学Linux运维:Shell编程实战 part3

    本书可分为五大部分:第一部分为第1章~第4章,此...第五部分为第17章~第20章,着重讲解Linux信号及trap命令的企业应用实践、Expect自动化交互式程序的应用实践、贯穿全书技术的面试题和企业实战案例,以及子Shell知识。

Global site tag (gtag.js) - Google Analytics