shell--trap

trap 
    trap 是shell自带的捕获信号量的指令。trap命令用于指定在接收到信号后将要采取的动作。常见的用途是在脚本程序被中断时完成清理工作。
一、关于信号
历史上,shell总是用数字来代表信号,而新的脚本程序应该使用信号的名字,它们保存在用#include命令包含进来的signal.h头文件中,在使用信号名时需要省略SIG前缀。
kill和trap等都可以看到信号编号及其关联的名称。“信号”是指那些被异步发送到一个程序的事件。默认情况下,它们通常会终止一个程序的运行。

二、trap 的使用
1、运行格式
trap命令的参数分为两部分,前一部分是接收到指定信号时将要采取的行动,后一部分是要处理的信号名。

trap command signal

它有三种形式分别对应三种不同的信号回应方式。
第一种:

trap "commands" signal-list

当脚本收到signal-list清单内列出的信号时,trap命令执行双引号中的命令。
第二种:

trap signal-list

trap不指定任何命令,接受信号的默认操作,默认操作是结束进程的运行。
第三种:

trap " " signal-list

trap命令指定一个空命令串,允许忽视信号,我们用到的就是这一种。
※请记住,脚本程序通常是以从上到下的顺序解释执行的,所以必须在你想保护的那部分代码以前指定trap命令。
信号量详细列表可以trap -l即可显示
因为肯定有人现在手头没有linux机器,我就列出来吧
名称       默认动作             说明
SIGHUP       终止进程      通常因终端掉线或用户退出而引发
SIGINT     终止进程      中断进程
SIGQUIT   建立CORE文件    退出,通常因按下Ctrl+\组合键而引发
SIGILL     建立CORE文件        非法指令
SIGTRAP   建立CORE文件         跟踪自陷
SIGBUS     建立CORE文件        总线错误
SIGSEGV   建立CORE文件         段非法错误
SIGFPE     建立CORE文件        浮点异常
SIGIOT     建立CORE文件        执行I/O自陷
SIGKILL   终止进程       中断,通常因按下Ctrl+C组合键而引发
SIGPIPE   终止进程       向一个没有读进程的管道写数据
SIGALARM   终止进程       计时器到时
SIGTERM   终止进程       软件终止信号,终止,通常在系统关机时发送
SIGSTOP   停止进程       非终端来的停止信号
SIGTSTP   停止进程       终端来的停止信号
SIGCONT   忽略信号       继续执行一个停止的进程
SIGURG     忽略信号      I/O紧急信号
SIGIO     忽略信号      描述符上可以进行I/O
SIGCHLD   忽略信号       当子进程停止或退出时通知父进程
SIGTTOU   停止进程       后台进程写终端
SIGTTIN   停止进程       后台进程读终端
SIGXGPU   终止进程       CPU时限超时
SIGXFSZ   终止进程       文件长度过长
SIGWINCH   忽略信号       窗口大小发生变化
SIGPROF   终止进程       统计分布图用计时器到时
SIGUSR1   终止进程       用户定义信号1
SIGUSR2   终止进程       用户定义信号2
SIGVTALRM 终止进程       虚拟计时器到时
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值