trap '' TERM

原文地址: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)  终止,通常在系统关机时发送

推荐这些文章:

Oracle单引号拼接和替换

1.oracle拼接一个单引号:
正常写法:''''||   
由于单引号存在转义,第一个和最后一个是指定你要使用的字符,第二个’是单引号的转义字符,所以需要第三个‘才是真正你要拼接的那个。
也可以用 chr(39) 作为字符拼接,这样可能更直观。
2.oracle替换单引号
REPLACE('a,b',',',chr(39) || ',' || chr(39)) 
此处将,替换为‘,'
例如:需要将a,b 替换为 'a','b' 可以这么写:
    select  chr(39) || REPLACE('a,b',',',chr...

shell命令篇--awk

显示以menu开头的数据   以单引号分割取第二个字段     显示序号 系统变量FS    系统变量OFS 改变默认分割符   系统变量RS 默认取值到/n,更改取到:       $ 0  默认一整行数据,    系统变量NR FNR NR 不会根据文件重新排列序号 系统变量NF NF 显示字段的数量 $NF 显示最后一个字段的值    if 判断    for  求第一个用户的kp...

重新点亮shell————周期性脚本[八]

前言 简单介绍一下周期性脚本 正文 周期性脚本之前先介绍一下信号。 捕获信号脚本的编写: kill 默认会发送15号信号给应用程序 ctrl+c 发送2号信号给应用程序 9号信号不可阻塞信号 所以只有kill -9 才是强杀,其他的可以进行捕获,然后不杀死。 例如捕获15号信号: trap "echo sig 15" 15,这样就捕获了,就不会杀死进程了。 一次性执行任务 at 18:31 这样就是在18:31分的时候进行执行。 然后可以通过atq,进行查询哪些任务将会被执行。 周期性执行任务 cron 配置方式 crontab -e 查看现有的计划任务 crontab -l 配置格式: 分...

shell编程 - 循环语句

1. for in 语句

基本格式

for var in list
do
commands
done

代码示例

list="test1 test2 test3"
for value in $list
do
echo $value
done

设置列表的分隔符

# 保存原始的分隔符设置
ifs=$IFS

# 设置风格符为换行符,逗号,以及冒号
IFS=$'\n',:

list="test1,test2,test3"
for value in $list
do
echo $value
done

# 恢复默认设置
IFS=$ifs

IFS默认将空格,制表符...

shell脚本进阶函数递归和信号捕捉

1.1)函数内部变量会和外部变量起冲突:
例:

[root@centos7 ~]# name=weilan
[root@centos7 ~]# func1(){ name=bbb; echo $name ; }
[root@centos7 ~]# func1
bbb
[root@centos7 ~]# echo $name
bbb

2)为了避免出现这种情况,我们函数内部的变量设置为本地变量
例:

[root@centos7 ~]# name=weilan
[root@centos7 ~]# func(){ local name=bbb; echo $name; }
[root@cen...

文章标题:trap '' TERM
文章链接:https://www.dianjilingqu.com/51138.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>