shell信号捕捉命令 trap
trap 命令
tarp命令用于在接收到指定信号后要执行的动作,通常用途是在shell脚本被中断时完成清理工作。例如:
脚本在执行时按下CTRL+c时,将显示"program exit..."并退出(CTRL+c的信号是SIGINT)
#!/bin/bash
trap "ehco 'program exit...'; exit 2" SIGINT
....
信号
常用信号
| 信号名称 | 信号数 | 描述 |
|---|---|---|
| SIGINT | 2 | 程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl+C)时发出。 |
| SIGQUIT | 3 | 和SIGINT类似, 但由QUIT字符(通常是Ctrl /)来控制. 进程在因收到SIGQUIT退出时会产生core文件, 在这个意义上类似于一个程序错误信号。 |
| SIGFPE | 8 | 在发生致命的算术运算错误时发出. 不仅包括浮点运算错误, 还包括溢出及除数为0等其它所有的算术的错误。 |
| SIGKILL | 9 | 用来立即结束程序的运行. 本信号不能被阻塞, 处理和忽略。 |
| SIGALRM | 14 | 时钟定时信号, 计算的是实际的时间或时钟时间. alarm函数使用该信号。 SIGTERM |
捕获信号
trap的命令语法:
trap command signal
这里的
command可以是linux命令,或用户定义的函数。signal是信号名称或信号数,可以指定多个信号,以空格相隔。trap在shell常见用途- 脚本退出前执行命令
脚本在执行时按下
CTRL+c时,将显示"program exit..."并退出(CTRL+c的信号是SIGINT)trap "ehco 'program exit...'; exit 2" SIGINT
- 忽略信号
例:脚本运行时忽略
SIGINTSIGQUITSIGFPE等信号trap '' 2 3 8
shell信号捕捉命令 trap的更多相关文章
- trap在shell中捕捉信号
一.trap捕捉到信号之后,可以有三种反应方式:(1)执行一段程序来处理这一信号(2)接受信号的默认操作(3)忽视这一信号 二.trap对上面三种方式提供了三种基本形式:第一种形式的trap命令在sh ...
- 为shell布置陷阱:trap捕捉信号方法论
本文目录: 1.1 信号说明 1.2 trap布置陷阱 1.3 布置完美陷阱必备知识 家里有老鼠,快消灭它!哎,又给跑了.老鼠这小东西跑那么快,想直接直接消灭它还真不那么容易.于是,老鼠药.老鼠夹子或 ...
- linux 下信号处理命令trap && linux下各种信号的意义
1.用途说明 trap是一个shell内建命令,它用来在脚本中指定信号如何处理.比如,按Ctrl+C会使脚本终止执行,实际上系统发送了SIGINT信号给脚本进程,SIGINT信号的默认处理方式就是退出 ...
- Linux控制脚本:信号捕捉,作业控制,调整谦让度,以及计划任务
1.关于信号以及信号捕捉 (1) $ ps -au可以用来查看所有作业,包括暂停的和停止的,当然还有正在运行的. 在STAT这一列表示各个作业的状态,S表示Stop,R表示Run,T表示被追踪的或停 ...
- bash信号捕捉
我们ping一个主机,然后按下ctrl+c那么就会终止这个ping动作,如下图: 可是如果使用一个循环来逐个ping不同主机,你再按下ctrl+c就会发现停不下来,直到循环完成,如下图: #!/bin ...
- Bash Shell内建命令和保留字
Bash Shell内建命令和保留字命令含义!保留字,逻辑非:不做任何事,只做参数展开.读取文件并在shell中执行它alias设置命令或命令行别名bg将作业置于后台运行bind将关键字序列与read ...
- shell的嵌入命令大全
围绕以下几点展开学习: 1.什么是shell的嵌入命令? 2.为什么使用shell? 3.怎样使用shell嵌入命令? 1.什么是shell的嵌入命令: ♦这些命令是在实际的Bourne shell里 ...
- Shell内置命令
主要Shell内置命令 Shell有很多内置在其源代码中的命令.这些命令是内置的,所以Shell不必到磁盘上搜索它们,执行速度因此加快.不同的Shell内置命令有所不同. A.2.1 bash内置命 ...
- Linux命令——trap
简介 trap是shell内置命令,它对硬件信号和其他事件做出响应.trap定义并激活信号处理过程,信号处理过程是当shell接收信号或其他特殊条件时要运行的处理过程. 语法 trap [-lp] [ ...
随机推荐
- Java,数据库中的数据导入到Excel
private static void executeMethod(JobExecutionContext arg0) throws Exception{ try { TContrastService ...
- 微信小程序之下拉加载和上拉刷新
微信小程序下拉加载和上拉刷新两种实现方法 方法一:onPullDownRefresh和onReachBottom方法实现小程序下拉加载和上拉刷新 首先要在json文件里设置window属性 ...
- AngularJS实战之Controller之间的通信
我们时常会在不同controller之间进行通信,接下来就介绍三种controller之间的通信方式 一.使用$on.$emit和$broadcast进行controller通信 虽然AngularJ ...
- WordPress-Word图片上传插件整合教程-Xproer.WordPaster
插件下载(PHP):wordpress 3.7.1, 说明:由于许多插件可能使用相同钩子,导致冲突,所以提供手支方式整合. 1.上传插件目录. 说明:WordPress 3.7.1 使用的是TinyM ...
- oss+上传文件夹
最近公司做工程项目,实现文件夹云存储上传. 网上找了一天,发现网上很多代码都存在相似问题,最后终于找到了一个满足我需求的项目. 工程如下: 这里对项目的文件夹传输功能做出分析,怎么实现文件夹上传的,如 ...
- c51较c比较,单片机最小系统
sfr(Special function registers):特殊功能寄存器声明 bit:位变量声明 sbit:特殊位声明 psw^2,表示psw寄存器上的第2位 << >> ...
- _编程语言_C语言_C++_时间
C++ 标准库没有提供日期类型,使用C预压的日期和事件操作. 使用时引入头文件 <ctime> . 四个和事件相关的函数: clock_t // 系统时间和日期表示为某种整数time_t ...
- Mybatis类型转换介绍
1.1 目录 1.2 建立TypeHandler 1.2.1 TypeHandler接口 1.2.2 BaseTypeHandler抽象类 1.3 注册TypeHa ...
- 入手IntelliJ IDEA 常用配置
Idea常用设置 下载地址:https://www.jetbrains.com/idea/ 激活服务器:http://idea.iteblog.com/key.php 代码补全取消区分大小写 Inte ...
- 04:第一个OC类
1.类与对象的关系 面向对象的核心就是对象,那怎么创建对象? OC中创建对象比较复杂, 首先要理解一个概念叫做类. 现实生活中是根据一份描述,一份模板创建对象,编程语言也一样,也必须先有一份描述,在这 ...