-
linux trap
2015-11-20 17:17:00linux trap posted on 2015-11-20 17:17 秦瑞It行程实录 阅读(...) 评论(...) 编辑 收藏 var allowComments=true,cb_blogId=156984,cb_entryId=4981473,....转载于:https://www.cnblogs.com/ruiy/p/4981473.html
-
linux trap命令
2010-10-24 20:05:00linux trap命令trap命令用于指定 在接收到信号后将要采取的行动,我们将在本书后面的内容中详细介绍信号。trap命令的一种常见用途是在脚本程序被中断时完成清理工作。历史 上,shell总是用数字来代表信号,而新的脚本程序应该使用信号的名字,它们保存在用#include命令包含进来的signal.h头文件中,在使用 信号名时需要省略SIG前缀。你可以在命令提示符下输入命令trap -l来查看信号编号及其关联的名称。
对于那些不熟悉信号的人们来说,“信号”是指那些被异步发送到一个程序的事件。默认情况下,它们通常会终止一个程序的运行。
trap命令的参数分为两部分,前一部分是接收到指定信号时将要采取的行动,后一部分是要处理的信号名 。
请记住,脚本程序通常是以从上到下的顺序解释执行的,所以必须在你想保护的那部分代码以前指定trap命令。
如果要重置某个信号的处理条件到其默认值,只需简单的将command设置为-。如果要忽略某个信号,就把command设置为空字符串‘’。一个不带参数的trap命令将列出当前设置的信号及其行动的清单。
表2-11列出了X/Open规范里面规定的能够被捕获的比较重要的一些信号(括号里面的数字是传统的信号编号)。更多细节请参考signal在线手册的第七部分(man 7 signal)。
表 2-11
信 号
说 明
HUP(1)
挂起,通常因终端掉线或用户退出而引发
INT(2)
中断,通常因按下Ctrl+C组合键而引发
QUIT(3)
退出,通常因按下Ctrl+/组合键而引发
ABRT(6)
中止,通常因某些严重的执行错误而引发
ALRM(14)
报警,通常用来处理超时
TERM(15)
终止,通常在系统关机时发送
实验:信号处理
下面的脚本演示了一些简单的信号处理方法:
运行这个脚本,在每次循环时按下Ctrl+C组合键(或任何你系统上设定的中断键),我们将得到如下所示的输出:
实验解析
在这个脚本程序中,我 们先用trap命令安排它在出现一个INT(中断)信号时执行rm –f /tmp/my_tmp_file_$$命令删除临时文件。脚本程序然后进入一个while循环,只要临时文件存在,循环就一直持续下去。当用户按下 Ctrl+C组合键时,就会执行rm –f /tmp/my_tmp_file_$$语句,然后继续下一个循环。因为临时文件现在已经被删除了,所以第一个while循环将正常退出。
接下来,脚本程序再次 调用trap命令,这次是指定当一个INT信号出现时不执行任何命令。脚本程序然后重新创建临时文件并进入第二个while循环。这次当用户按下 Ctrl+C组合键时,没有语句被指定执行,所以采取默认处理方式,即立即终止脚本程序。因为脚本程序被立即终止了,所以永远也不会执行最后的echo和 exit语句。
原文地址 http://blog.csdn.net/ecjtuync/archive/2008/09/02/2865770.aspx
-
Linux trap 命令
2018-09-26 18:37:56用途说明 trap是一个shell内建命令,它用来指定信号的处理方式,例如: 使用Ctrl +c会是一个非守护进程中之执行,实际上是给进程发送...trap命令不仅可以处理Linux信号,还可以对脚本的退出(EXIT)、调试(DEBUG)、错...用途说明
trap是一个shell内建命令,它用来指定信号的处理方式,例如:
使用
Ctrl +c
会是一个非守护进程中之执行,实际上是给进程发送了一个SIGINT
信号,该信号的默认处理方式就是退出程序。如果想让程序在退出之前执行些额外的操作,或者不退出程序等操作就可以使用trap
命令来对指定的信号做处理。trap
命令不仅可以处理Linux信号,还可以对脚本的退出(EXIT
)、调试(DEBUG
)、错误(ERR
)、返回(RETURN
)等情况做处理。参数说明
trap [-lp] [[arg] sigspec ...]
格式:
-
trap "commands" signals
当shell接收到signals指定的信号时,执行commands命令。
-
trap signals
没有指定命令部分,那么就将信号处理复原。
-
trap "" signals
忽略信号signals
-
trap -l
列出所有信号
-
trap -p
打印当前trap 设置
-
trap "commands" EXIT|DEBUG|ERR|RETURN
脚本退出|脚本执行打印调试信息|命令出错,退出码非0|函数或调用其他脚本返回时
执行commands 指定命令
应用场景
- 当执行脚本后需要用户做一些固定操作时,例如ATM机,避免用户发送关闭信号来关闭脚本,影响程序的正常关闭,避免用户夺权问题,使用trap命令来忽略用户发送的中断信号请求,以达到限制用户操作避免安全问题。
-
-
Linux Trap命令
2020-02-16 18:55:39前言: 翻了下man 和info help 手册,这个trap命令的介绍都是英文。看的有些头疼,这找到一个中文版的说明,转载过来保存下: https://blog.csdn.net/carolzhang8406/article/details/46504415/ -----------------...前言: 翻了下man 和info help 手册,这个trap命令的介绍都是英文。看的有些头疼,这找到一个中文版的说明,转载过来保存下:
https://blog.csdn.net/carolzhang8406/article/details/46504415/
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 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文件 终止进程,并且生成core文件
SIGILL 建立CORE文件 非法指令
SIGTRAP 建立CORE文件 跟踪自陷
SIGBUS 建立CORE文件 总线错误
SIGSEGV 建立CORE文件 段非法错误
SIGFPE 建立CORE文件 浮点异常
SIGIOT 建立CORE文件 执行I/O自陷
SIGKILL 终止进程 杀死进程
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 终止进程 虚拟计时器到时
-
linux trap的翻译问题
2014-02-27 16:47:36linux trap的翻译是陷阱,早期的内存是没有虚拟内存的,一个应用程序崩溃会导致系统崩溃,后来加入了MMU模块,引入了虚拟内存及其管理单元,其管理单元增加了trap这个功能,即使应用程序崩溃了,可以把它限制在trap... -
Linux trap命令
2015-01-05 14:46:19trap 系统信号 -
Linux trap介绍
2017-05-03 20:28:22这样^/就可以reboot程序了^_^不知道Linux重启是不是trap到某个信号了就这样...当然是类似,这个脚本太east了.有时间加机会了看看^_^ 附: Linux信号简介 1) SIGHUP 本信号在用户终端连接(正常或非... -
linux trap 捕捉信号
2016-08-03 13:58:14trap捕捉到信号之后,可以有三种反应方式: (1)执行一段程序来处理这一信号 (2)接受信号的默认操作 (3)忽视这一信号 二. trap对上面三种方式提供了三种基本形式: 第一种形式的trap命令在... -
LINUX trap命令
2013-08-29 10:44:04trap命令用于指定在接收到信号后将要采取的动作。常见的用途是在脚本程序被中断时完成清理工作。不过,这次我遇到它,是因为客户有个需求:从终端访问服务器的用户,其登陆服务器后会自动运行某个命令,例如打开应用... -
Linux trap用法介绍
2014-11-21 23:48:01trap命令是一个shell内建命令,它用来在脚本中指定信号如何处理。trap命令的参数分为两部分,前一部分是接收到指定信号时将要采取的行动,后一部分是要处理的信号名. 格式:trap commands signals 1. 执行一... -
linux trap命令举例
2016-01-17 21:15:39eg 1, [xiatian@hzling42 ~]$ ls bin etc workarea [xiatian@hzling42 ~]$ touch 1.txt [xiatian@hzling42 ~]$ alarm () { > echo '22' > 1.txt > exit 1 ...[xiatian@hzling42 ~]$ trap 'alarm -1 -
linux trap命令详解
2013-12-05 09:09:48用途说明 rap是一个shell内建命令,它用来在脚本中指定信号如何处理。比如,按Ctrl+C会使脚本终止执行,实际上系统发送了...trap命令不仅仅处理Linux信号,还能对脚本退出(EXIT)、调试(DEBUG)、错误(ERR)、返回 -
linux trap 詳解
2013-08-02 11:36:41格式:trap "commands" signals 当shell接收到signals指定的信号时,执行commands命令。 使用示例 示例一 [root@new55 ~]# trap -p [root@new55 ~]# trap "echo hello" INT [root@new55 ~]# trap -p ... -
linux trap详解
2012-07-04 11:06:38这样^\就可以reboot程序了^_^不知道linux重启是不是trap到某个信号了就这样...当然是类似,这个脚本太east了.有时间加机会了看看^_^ 附: Linux信号简介 1) SIGHUP 本信号在用户终端连接(正常或非正常)结束... -
linux trap command signal
2013-03-26 17:18:11trap命令用于指定在接收到信号后将要采取的行动,我们将在本书后面的内容中详细介绍信号。trap命令的一种常见用途是在脚本程序被中断时完成清理工作。历史上,shell总是用数字来代表信号,而新的脚本程序应该使用... -
Linux trap(捕捉) 命令
2017-01-31 14:10:20trap 命令用于指定在接收到信号后将要采取的行动;trap 命令的参数分为两部分,前一部分是接收到指定信号时将要采取的行动,后一部分是要处理的信号名。而且必须在你想保护的那部分代码以前指定trap命令。格式:... -
linux组合键 发送指定信号_linux trap脚本信号捕获命令的使用
2021-01-09 16:47:57linux的信号,可以用于进程间通信,还可以用于系统向进程发送命令。比如当系统关机的时候,需要通知每一个进程做善后工作,系统会对每个进程发送SIGTERM信号。进程在收到信号之后就会做一些清理动作。你也可以手动... -
【转】linux trap
2015-06-09 17:20:00这样^/就可以reboot程序了^_^不知道linux重启是不是trap到某个信号了就这样...当然是类似,这个脚本太east了.有时间加机会了看看^_^ 附: Linux信号简介 1) SIGHUP 本信号在用户终端连接(正常或非正常)结束...