shell--trap

本文介绍了Shell中的trap命令,该命令用于指定脚本接收到特定信号后的处理动作。文章详细解释了三种使用形式,并列举了常见信号及其默认动作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 终止进程     虚拟计时器到时
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值