首页 > shell --- trap 抓取信号

shell --- trap 抓取信号

1. 解决问题

针对部分运行在生产环境中的脚本来说,有一些脚本运行的过程是不能被中断的,比如:生产环境 定期备份脚本,为了保证备份安全,备份期间不能被 SIGTERM和SIGINT 之类的中断信号中断。

该种类型的脚本逻辑增加抓取信号的命令,从而保证脚本的运行不会被中断。

trap命令即可提供该功能,trap 命令能够抓取除 -9 信号之外的命令,SIGKILL信号是不能被阻塞的

2. 应用场景

不希望环境运行的脚本被 中断信号中断

3. 实现举例

#!/bin/bashtrap "echo sig 15" 15 #抓取 15信号之后 执行`echo sig 15`命令
trap "echo sig 2" 2   #抓取 2信号之后,执行`echo sig 2`命令echo $$               #打印进程号while :
doecho "running"sleep 1
done

运行如下:

[root@node1 design_partten]# chmod u+x 15.sh
[root@node1 design_partten]# ./15.sh 
2805189
running
running
sig 15  #另一个终端 执行 kill -15 2805189
running
sig 2   #当前终端执行 ctrl+c
running
running
Killed  #另一个终端执行 kill -9 running

更多相关:

  • 在DOS窗口执行了一些列命令完成某项工作后,如果要查看都执行了那些命令,该如何办呢?(前提:DOS窗口未关闭的情况下)     一、方法一:使用↑↓箭头上下翻看执行过的命令,此方式适宜执行命令较少的情况; 二、方法二:使用快捷键; F7快捷键查看所有执行过的命令 F3:调出上一条执行过的命令,调出后直接回车即可执行; F...

  • 在windows的DOS操作界面里面,清屏的命令是cls,那么在linux 里面的清屏命令是什么呢?下面笔者分享几种在linux下用过的清屏方法。 1、clear命令、这个命令将会刷新屏幕,本质上只是让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息。 2、Ctrl+l(小写的L)、这是一个清屏的快捷键,这个是笔者...

  • LINUX下用CTRL+R快速搜索HISTORY历史命令,快速索引到之前使用过的命令行语句 前提是,搜索已经使用的命令,否则是查不出来结果的。 ctrl+r 用途:反向搜索执行过的命令。(reverse-i-search) 1、任何目录下按住ctrl + r 2、输入历史命令中的字符串 ,比如 输入shut 会检索...

  • 刚开始接触linux,总有些简单的问题不知道怎么搞定,先将目前汇总的解决方法叫做"linux入门-1",后续在使用过程中逐步总结。   1. 连接 ADSL : sudo pon dsl-provider 断开 ADSL: sudo poff 查看 ADSL 状态: plog 2. dpkg 命令 dpkg 是 Debia...

  • 文章目录NVME 和 AHCI 性能比较NVME-CLI nvme工具使用1. 安装2. 命令综述3. 基本命令演示4. NVME 固件设备升级...

  • 在本课程中,您将学习如何在Unity中使用可视化脚本(以前称为Bolt)以及如何在不编写一行代码的情况下创建自己的高级游戏所需的一切。本课程将教你如何掌握可视化脚本,即使你以前没有任何关于unity或编程的经验。 课程获取:Unity 3D学习视觉脚本无需编码即可创建高级游戏-云桥网 本课程首先为绝对初学者介绍unity,因...

  • The complete AutoCAD Automation tasks course Using Script MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:42节课(4h 25m) |大小:3.35 GB 含课程文件 学...

  • 我们知道linux 下shell可以被分为交互式脚本和非交互式脚本。 交互式脚本即 输入命令之后shell会等待你的输入,当你输入之后命令会被立即提交从而执行。这个时候我们常见的终端bash,以及login提示等都是交互式命令。 非交互式脚本即shell解释器不需要等待终端的输入,自己去执行脚本中的命令,当遇到脚本中的EOF则结束。...

  • 在linux系统中想要记录所有登录过当前系统的用户操作,排查有人对当前系统做的何种操作导致系统问题,可以按照如下方法进行。 前言 在描述操作步骤之前,先说一下系统环境变量的相关配置文件 ~/.bashrc和~/.bash_file,这两个文件是当前用户shell下生效的环境变量配置文件。修改完成之后需要source 一下对应的配...

  • 我的自动化脚本在运行的时候,会生成一个界面,点击该页面上的按钮能够进行自动化操作。 经常遇到的一个问题是: 脚本运行一半,GUI程序出现了异常情况,这个时候,再次点击生成的界面上的按钮,不会有任何反应,我需要重新启动exe文件,程序的健壮性受到了考验。 为了解决这个问题,只需要在脚本中加入少量的错误验证即可: $ch...