shell 脚本中断问题定位

news2024/11/26 9:16:07

shell 脚本中断问题定位

  • 1 介绍
  • 2 定位方法
    • 2.1 查看脚本的退出状态码
    • 2.2 查看系统日志文件
    • 2.3 使用journalctl工具
    • 2.4 使用dmesg命令
    • 2.5 检查脚本自身的日志记录
    • 2.6 使用图形界面工具
    • 2.7 配置和使用集中式日志管理系统
  • 参考

1 介绍

shell 脚本运行,一段时间后,莫名中断。
在这里插入图片描述

2 定位方法

2.1 查看脚本的退出状态码

当shell脚本执行完毕后,它会返回一个退出状态码。通常情况下,0 表示成功,非0 表示有错误发生。可以通过执行脚本后检查 $? 变量来获取上一个命令的退出状态码。

bash
./my_script.sh  
echo $?

2.2 查看系统日志文件

Linux系统会将很多信息记录在系统日志文件中,这些日志文件通常位于 /var/log 目录下。例如,auth.log 或 secure 文件可能记录了通过登录认证的用户在系统中执行的命令,包括登录和退出信息。可以通过以下命令查看日志文件:

sudo nano /var/log/auth.log
sudo grep '特定字符串' /var/log/auth.log

使用grep命令可以搜索包含特定字符串的日志条目,这有助于快速定位脚本执行相关的日志。

2.3 使用journalctl工具

如果你的系统使用 systemd 作为初始化系统,journalctl 是一个强大的工具,可以用来查看和管理 systemd 日志。使用以下命令可以查看日志:

sudo journalctl
sudo journalctl -r
sudo journalctl -u 服务名称
sudo journalctl | grep "关键词"

其中-r参数表示从最新的日志开始查看,-u参数后跟服务或单元名称可以筛选特定服务的日志,grep可以用来搜索包含特定关键词的日志条目。

2.4 使用dmesg命令

dmesg命令可以显示内核环形缓冲区中的消息,这些消息通常包含系统启动时硬件检测和加载的消息,有时也包括脚本执行期间发生的系统级错误信息。

dmesg | grep "关键词"
使用grep可以过滤出包含特定关键词的消息。

2.5 检查脚本自身的日志记录

如果脚本设计了日志记录功能,检查脚本生成的日志文件也可以提供退出原因的线索。脚本可能会将输出重定向到一个日志文件中,例如:

./脚本名 > script.log 2>&1

这样,脚本的标准输出和标准错误都会被记录到 script.log 文件中。

2.6 使用图形界面工具

如果你使用的Linux桌面环境提供了图形化的日志查看工具,也可以通过这些工具来查阅和筛选系统日志。

2.7 配置和使用集中式日志管理系统

在多台机器的环境中,可以配置syslog服务器来集中收集和处理日志信息,便于集中管理和分析。

参考

1、linux–shell
2、linux–shell脚本记录进程内存变化top | VmRSS | VmSize(内存泄漏)
3、执行shell脚本出现异常:bad interpreter: No such file or directory如何解决

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

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

相关文章

视频编解码从H.264到H.266:浅析GB28181安防视频汇聚EasyCVR视频压缩技术

随着信息技术的飞速发展,视频编解码技术也在不断革新,以适应高清、超高清甚至8K视频时代的到来。视频编解码技术作为数字多媒体领域的核心技术之一,也在不断地演进和革新。从早期的H.261到现在的H.265、H.266,每一次技术的升级都极…

lambda-map.merge

map.merge 结论: 1.当前传入的 key ,value biFunction 2.如果之前map不存在则直接put(当前key,当前value) 3.如果之前map已经有了,老value与 当前value 进入function处理后再 put(当前key,处理后的value)

【YOLOv5/v7改进系列】引入RT-DETR的RepC3

一、导言 RT-DETR(Real-Time Detection Transformer)是一种针对实时目标检测任务的创新方法,它旨在克服YOLO系列和其他基于Transformer的检测器存在的局限性。RT-DETR的主要优点包括: 无NMS(非极大值抑制)…

基于LMS自适应滤波的窄带信号宽带噪声去除(MATLAB R2021B)

数十年的研究极大的发展了自适应滤波理论,自适应滤波理论已经成为信号处理领域研究的热点之一。从理论上讲,自适应滤波问题没有唯一解。为了得到自适应滤波器及其应用系统,可以根据不同的优化准则推导出许多不同的自适应理论。目前该理论主要…

youlai-boot项目的学习(4) 前后端本地部署

环境 1、macOS, brew, IntelliJ IDEA, WebStrom 2、后端:https://gitee.com/youlaiorg/youlai-boot.git , master, 9a753a2e94985ed4cbbf214156ca035082e02723 3、前端:https://gitee.com/youlaiorg/vue3-element-admin.git, master, 66b913ef01dc880ad…

嵌入式Linux系统编程 — 4.1 字符串输入输出

目录 1 字符串输出 1.1 字符串输出函数简介 1.2 示例程序 2 字符串输入 2.1 字符串输入简介 2.2 示例程序 程序运行时,需打印信息至标准输出 stdout 设备 或标准错误 stderr设备(譬如屏幕),如调试信息、报错信息、中间产生的…

hnust 1817 算法10-10,10-11:堆排序

hnust 1817 算法10-10,10-11:堆排序 题目描述 堆排序是一种利用堆结构进行排序的方法,它只需要一个记录大小的辅助空间,每个待排序的记录仅需要占用一个存储空间。 首先建立小根堆或大根堆,然后通过利用堆的性质即堆顶的元素是最…

NDT(基于正态分布变换的配准算法)

NDT是将单个扫描的离散点集转换为空间上定义的分段连续可微概率密度,该概率密度由一组易于计算的正态分布组成的算法。采用NDT连续化后,传统硬离散优化问题能够潜在地转化为更易于处理的连续优化问题。 NDT原理 NDT将根据点云中点所处的位置&#xff0…

一款开源、免费、现代化风格的WPF UI控件库

前言 今天大姚给大家分享一款开源(MIT License)、免费、现代化风格的WPF UI控件库:ModernWpf。 项目介绍 ModernWpf是一个开源项目,它为 WPF 提供了一组现代化的控件和主题,使开发人员能够创建具有现代外观的桌面应…

Linux的fread函数

fread函数 从文件中读入数据到指定的地址中 函数原型 : size_t fread(void*buff , size_t size, size_t count , FILE* stream) /* * description : 对已打开的流进行数据读取 * param ‐ ptr :指向 数据块的指针 * param ‐ size :指定读取的每…

GuLi商城-商品服务-API-三级分类-删除-页面效果

一步步学习Vue太慢了,准备跳过前端的学习,直接使用前端完整的项目 下载依赖npm install,会报错,排查了好久 我安装的是Node14,所以必须要安装4.14 Vscode终端输入:npm install node-sass4.14 输入&#x…

snat、dnat和firewalld

snat :源地址转换 内网——外网 内网ip转换成可以访问外网的ip 也就是内网的多个主机可以只有一个有效的公网ip地址访问外部网络 DNAT:目的地址转发 外部用户,可以通过一个公网地址访问服务内部的私网服务 也就是私网的IP和公网IP做一个…

Golang | Leetcode Golang题解之第202题快乐数

题目: 题解: func isHappy(n int) bool {cycle : map[int]bool{4: true, 6: true, 37: true, 58: true, 89: true, 145: true, 42: true, 20: true}for n ! 1 && !cycle[n] {n step(n)}return n 1 }func step(n int) int {sum : 0for n > …

亚马逊AI技术风波:人工智能“洗白”现象引发质疑

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

基于RabbitMQ的异步消息传递:发送与消费

引言 RabbitMQ是一个流行的开源消息代理,用于在分布式系统中实现异步消息传递。它基于Erlang语言编写,具有高可用性和可伸缩性。在本文中,我们将探讨如何在Python中使用RabbitMQ进行消息发送和消费。 安装RabbitMQ 在 Ubuntu 上安装 Rabbi…

stm32中IIC通讯协议

参考资料:大部分均引用b站江协科技课程、GPT及网络资料 什么是IIC(i2C)通讯协议? 关键字:SCL、SDA、半双工、同步、串行。 IIC(Inter-Integrated Circuit),也称为I2C(In…

vue2 element ui 表单 动态增加表单项 表单项值不可重复 select多选

案例 <template><el-form :model"form" ref"form" label-width"70px"><el-form-item><el-button icon"el-icon-plus" type"primary" plain click"add">新增</el-button><el-b…

22 Shell编程之免交互

目录 22.1 Here Document免交互 22.1.1 Here Document概述 22.1.2 Here Document免交互 22.1.3 Here Document变量设定 22.1.4 Here Document格式控制 22.1.5 Here Document多行注释 22.2 expect免交互 22.2.1 expect概述 22.2.2 expect安装 22.2.3 基本命令介绍 22.2.4expec…

期末测试一

字符数组的排序注意的问题 &#xff1a; 1.对于输入字符的时候 如果给出了要输入几个字符 n >>>>> for ( i 0 ; i < n ;i ) { scanf("%c",&ch); } 如果说直到输入到换行符结束 >>>>>>while ( ch! \ n ) 这个需要额…

C#——命名空间详情

命名空间 在 C# 中&#xff0c;可以将命名空间看作是一个范围&#xff0c;用来标注命名空间中成员的归属&#xff0c;一个命名空间中类与另一个命名空间中同名的类互不冲突&#xff0c;但在同一个命名空间中类的名称必须是唯一的。 定义命名空间 定义命名空间需要使用 namesp…