快速业务通道

Linux 信号捕捉trap

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-03

我们在运行脚本的时候,使用Ctrl c会直接终止,但我们希望做一些收尾工作,或者是我们在运行脚本时不希望被一些命令打断,这时候,我们就用到了trap命令.

trap命令用于指定在介绍到指定信号后将要采取的动作.比较常用的就是在终止脚本时执行清理工作.

Trap 有三种格式:

1

trap "command" signal 脚本收到signal-list清单内列出的信号时,trap命令执行双引号中的命令.

2

Trap "commands" signal-list 当脚本收到signal-list清单内列出的信号时,trap命令执行双引号中的命令

3:

Trap signal-list 不指定任何命令,接受信号的默认操作,默认操作是结束进程的运行.

4:

Trap " " signal-list trap命令指定一个空命令串,允许忽视信号,我们用到的就是这一种.

要注意的是:command只有一个是,不加引号也可以,在command外加单引号双引号是一样的.脚本程序通常是以从上到下的顺序解释执行的,在你想保护的那部分代码以前指定trap命令.所有信号都能捕捉 除了kill不能捕捉.

Linux信号简介

1) SIGHUP 本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联.   

2) SIGINT 程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出   

3) SIGQUIT SIGINT类似, 但由QUIT字符(通常是Ctrl-)来控制. 进程在因收到SIGQUIT退出时会产生core文件, 在这个意义上类似于一个程序错误信号.   

4) SIGILL 执行了非法指令. 通常是可执行文件本身出现错误, 或者试图执行数据段. 堆栈溢出时也有可能产生这个信号.   

5) SIGTRAP 由断点指令或其它trap指令产生. debugger使用.   

6) SIGABRT 程序自己发现错误并调用abort时产生.   

7) SIGIOT PDP-11上由iot指令产生, 在其它机器上和SIGABRT一样.   

8) SIGBUS 非法地址, 包括内存地址对齐(alignment)出错. eg: 访问一个四个字长的整数, 但其地址不是4的倍数.   

9) SIGFPE 在发生致命的算术运算错误时发出. 不仅包括浮点运算错误, 还包括溢出及除数为0等其它所有的算术的错误.   

10) SIGKILL 用来立即结束程序的运行. 本信号不能被阻塞, 处理和忽略.   

11) SIGUSR1 留给用户使用   

12) SIGSEGV 试图访问未分配给自己的内存, 或试图往没有写权限的内存地址写数据.   

13) SIGUSR2 留给用户使用   

14) SIGPIPE Broken pipe   

15) SIGALRM 时钟定时信号, 计算的是实际的时间或时钟时间. alarm函数使用该信号.   

16) SIGTERM 程序结束(terminate)信号

if [ $? -eq 0 ];then

echo -e "^[[32m192.168.200.$I is up.^[[0m"

else

echo -e "33[32m 192.168.200.$I is down.33[0m"

fi

done

本文出自 “linux之路” 博客,请务必保留此出处http://linuxzoe.blog.51cto.com/3005391/565512

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号