shell脚本捕捉被中断信号

1、使用trap命令对信号进行捕捉

#!/bin/bash# 设置捕捉信号的处理函数
trap 'echo "Received SIGTERM"; exit' SIGTERM
trap 'echo "Received SIGINT"; exit' SIGINTwhile true; doecho "Running in the background..."sleep 1
done

2、如何定位是哪个进程发送的SIGTERM或者SIGINT导致shell脚本退出

trap 中输出发送信号的进程的信息,使用 $PPID 获取当前进程的父进程(即发送信号的进程)的 PID,并使用 ps -o comm= -p $PPID 获取发送信号的进程的名称。这样在输出中就能看到是哪个进程发送了信号

#!/bin/bash# 保存当前进程的PID
SCRIPT_PID=$$# 设置捕捉信号的处理函数
trap 'echo "Received SIGTERM from $(ps -o comm= -p $PPID) (PID: $PPID)"; exit' SIGTERM
trap 'echo "Received SIGINT from $(ps -o comm= -p $PPID) (PID: $PPID)"; exit' SIGINTwhile true; doecho "Running in the background..."sleep 1
done

3、shell脚本防止被信号中断

信号处理:

如果 while 循环被某个信号中断,那么后台执行的脚本可能会退出。确保后台执行的脚本不会受到不希望的信号

  1. trap "" HUP # 忽略挂起信号 

4、使用 nohup 或 setsid使脚本在后台独立运行

在调用后台执行的脚本时,使用 nohupsetsid 命令可以帮助脚本在后台独立运行,并且不受终端连接的影响

nohup /path/to/background_script.sh &
# 或者
setsid /path/to/background_script.sh &

5、标准输入、输出和错误重定向:

在后台执行的脚本中,确保标准输入(stdin)、标准输出(stdout)、标准错误(stderr)都被正确地重定向,以避免与 systemd 的执行环境有关的问题。

# 在后台执行的脚本中
while true; do# 循环体操作echo "Running in the background..."sleep 1
done > /path/to/logfile.log 2>&1

6、shell脚本中一句话查找和遍历子目录对应的值

find "$base_directory" -maxdepth 1 -type d -name 'adc*' -exec sh -c 'echo "{}: $(cat {}/name) (Type: $(cat {}/value))"' \; | sort -n 
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/667774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FANUC机器人PROF-017从机断开故障报警处理方法总结

FANUC机器人PROF-017从机断开故障报警处理方法总结 情况说明: 机器人安装的是PROFINET板卡,按照手册进行PROFINET配置之后,重启控制柜,此时系统提示:PROF-017 从机断开, 如下图所示, 打电话咨…

PDF下载添加水印和访问密码

下载接口 ApiOperation(value "下载文件-pdf", notes "下载文件pdf版", httpMethod "GET", response WebResult.class)RequestMapping(value "/downloadPdf", method RequestMethod.GET)public void downloadFilePdf(RequestPar…

HTML5和CSS3强化知识总结

HTML5的新特性 HTML5的新增特性主要是针对于以前的不足,增一些新的标签、新的表单和新的表单属性等。这些新特性都有兼容性问题,基本是IE9以上版本的浏览器才支持,如果不考虑兼容性问题,可以大量使用这些新特性。 HTML5新增的语义…

ubuntu 18.04修改网卡名称

1.原来网卡配置 现在要把enp3s0的名称改为eth0 2. 总共修改三个文件 第一个修改 sudo vi /etc/default/grub 添加最后一行 GRUB_CMDLINE_LINUX"net.ifnames0 biosdevname0" 第二个修改sudo vi /etc/udev/rules.d/70-persistent-net.rules 如果没有就新建文件&a…

uniapp android和微信小程序实现PDF在线预览

在使用uniapp开发移动端时,微信开发者工具里webview能正常打开后端接口返回的pdf文件流。正式发布后,在配置了业务域名和服务器域名的前提下,预览pdf文件却只能看到白屏,因此我猜测微信小程序不能通过webview读取文件流。这个想法…

python接口自动化(五)--接口测试用例和接口测试报告模板(详解)

简介 当今社会在测试领域,接口测试已经越来越多的被提及,被重视,而且现在好多招聘信息要对接口测试提出要求。区别于传统意义上的系统级别测试,很多测试人员在接触到接口测试的时候,也许对测试执行还可以比较顺利的上手…

flink实战--flink的job_listener使用解析

背景 生产环境可能有如下的需求:当一个flink作业提交完成或者是运行中不定时给我们触发某个接口或发送一个消息,然后我们在做其他的操作,尤其是batch作业。 flink的job_listener就可以满足我们监听flink任务提交和运行状态的需求,具体如何使用本文将全面介绍一下。 注册入…

C2-Search-Netlas:一款基于Netlas API的强大C2服务器识别与检测工具

关于C2-Search-Netlas C2-Search-Netlas是一款功能强大的命令与控制(C2)服务器检测工具,该工具使用Java语言开发,基于Netlas API实现其功能,可以帮助广大研究人员轻松快速地识别和检测目标C2服务器的相关信息。 C2-S…

C++:通过count和find判断vector中是否包含某个数据

vector本身没有提供可以检测某个数据是否在其中的成员方法&#xff0c;可以使用泛型方法count和find进行检查&#xff1a; #include <iostream> #include <vector> #include <algorithm> using namespace std;int main() {vector<int> d{1, 2, 2, 2, …

nginx flv模块的使用和源码分析

这里写自定义目录标题 1. 为什么需要ngx_http_flv_module2. 配置指令3. 加载ngx_http_flv_module 模块4. 源码分析4.1 指令分析4.2 ngx_http_flv_handler处理函数 5. 如何请求flv进行验证6. 思考 1. 为什么需要ngx_http_flv_module 毋庸多说&#xff0c;就是为了提供在线的http…

Redis之基础篇

Redis简介 Redis是一种基于键值对&#xff08;Key-Value&#xff09;的NoSQL数据库&#xff0c;它支持string&#xff08;字符串&#xff09;、hash&#xff08;哈希&#xff09;、list&#xff08;列表&#xff09;、set&#xff08;集合&#xff09;、zset&#xff08;有序集…

Java后端面试总结

Java语言具有哪些特点? Java为纯面向对象的语言。它能够直接反应现实生活中的对象。 具有平台无关性。java利用Java虚拟机运行字节码,无论是在Windows、Linux还是MacOS等其它平台对Java程序进行编译,编译后的程序可在其它平台运行。 Java为解释型语言,编译器把Java代码编译…

随机图论基础

一&#xff0c;随机图、随机图空间 1&#xff0c;随机图 一个n个点的无向图&#xff0c;最多有sn(n-1)/2条边。 每条边都有一定的概率存在&#xff0c;有一定概率不存在&#xff0c;那么每个图都有一个出现概率。 2&#xff0c;随机图空间 一共有2^s种不同的图&#xff0c…

[word] word怎么让字在横线上居中 #学习方法#媒体#媒体

word怎么让字在横线上居中 word怎么让字在横线上居中&#xff1f; 在word文档中&#xff0c;有时为了某些字句突出显示&#xff0c;需要用下划线来表示&#xff0c;当着重显示部分为金额、面积或某些选项时&#xff0c;需要一条长下划线上左右有空白&#xff0c;而文字在下划…

Linux下对线程的理解(上)

1、线程的概念 要理解线程首先要理解页表和进程地址空间&#xff0c;我是这样子理解的&#xff0c;1、进程地址空间是进程访问资源的窗口。2、页表是规定进程地址空间中哪些属于进程。3、合理的使用进程地址空间页表可以对资源进行划分。而如何理解进程呢&#xff1f;进程是接受…

算法题目题单——图论

简介 本文为自己做的一部分图论题目&#xff0c;作为题单列出&#xff0c;持续更新。 题单由题目链接和题解两部分组成&#xff0c;题解部分提供简洁题意&#xff0c;代码仓库&#xff1a;Kaiser-Yang/OJProblems。 对于同一个一级标题下的题目&#xff0c;题目难度尽可能做…

【vscode】windows11在vscode终端控制台中打印console.log()出现中文乱码问题解决

1. 问题描述 在前端开发过程中使用vscode编写node.js&#xff0c;需要在控制台中打印一些中文信息&#xff0c;但是一直出现中文乱码问题&#xff0c;英文和数字都显示正常。在网上试了很多设置的办法&#xff0c;最终找到windos11设置中解决。 2. 原因 首先打开控制台&…

centos 7.7 离线安装docker

centos 7.7 离线安装docker Index of linux/static/stable/x86_64/https://download.docker.com/linux/static/stable/x86_64/ 【1】离线下载docker 压缩包上传至 /usr/local 目录&#xff0c;解压缩&#xff0c;并复制到 /usr/bin/ 目录中。 cd /usr/local/tar -zxvf docke…

力扣 第 123 场双周赛 解题报告 | 珂学家 | 二维偏序+单调队列优化

前言 执手看歌敲金钗&#xff0c;笑语落珠明眸睐。 忽然蝴蝶春风满&#xff0c;焉教冷镜瘦朱颜。 整体评价 T3是基于map的前缀和的变形题&#xff0c;T4是二维偏序的一道应用题。 题外话&#xff0c;力扣还是实现N久之前的承诺了&#xff0c;命名权奖励&#xff0c;赞一个。 …

7隐藏进程_Linux_Rootkit.md

Xcellerator 密码学Linux其他逆向工程 文章目录 [Linux Rootkit 第 7 部分&#xff1a;隐藏进程](https://xcellerator.github.io/posts/linux_rootkits_07/)选择要隐藏的 PID隐藏 PID Linux Rootkit 第 7 部分&#xff1a;隐藏进程 2020-10-01 :: TheXcellerator # linux #…