Linux 系统异常触发后自动重启配置指南
Linux 系统异常触发后自动重启配置指南
一、内核级自动重启配置
适用于内核崩溃(Kernel Panic)、硬件驱动故障等场景,通过 SysRq 和 Watchdog 实现快速恢复。
1. SysRq 强制重启
- 功能:通过触发内核崩溃或强制重启,绕过正常关机流程。
- 配置步骤:
# 启用 SysRq 功能(临时) echo 1 > /proc/sys/kernel/sysrq# 永久生效(编辑 sysctl.conf) sudo vi /etc/sysctl.conf # 添加以下行 kernel.sysrq = 1 sudo sysctl -p# 设置内核崩溃后自动重启时间(示例:10秒) echo 10 > /proc/sys/kernel/panic # 永久配置 echo "kernel.panic = 10" | sudo tee -a /etc/sysctl.conf
- 触发命令:
echo c > /proc/sysrq-trigger # 触发内核崩溃并生成转储(需 kdump) echo b > /proc/sysrq-trigger # 强制重启(跳过数据同步)
2. Watchdog 硬件/软件监控
- 功能:通过定期心跳检测,超时无响应则自动重启。
- 软件 Watchdog 配置:
# 加载模块 sudo modprobe softdog# 设置超时时间(示例:30秒) echo 30 > /proc/sys/kernel/watchdog_thresh# 启动服务 sudo systemctl start watchdog
- 硬件 Watchdog:需主板支持,通过
ipmitool
控制:ipmitool chassis power reset # 硬件级强制重启
二、服务/进程级自动重启
适用于用户态服务崩溃、进程挂起等场景。
1. systemd 服务管理
- 配置示例(
/etc/systemd/service/myapp.service
):[Service] ExecStart=/usr/bin/myapp Restart=always # 任何退出都重启 RestartSec=5s # 间隔 5 秒重启 [Install] WantedBy=multi-user.target
- 生效命令:
sudo systemctl daemon-reload sudo systemctl enable myapp --now
2. Supervisor 进程监控
- 配置示例(
/etc/supervisor/conf.d/myapp.conf
):[program:myapp] command=/usr/bin/myapp autostart=true autorestart=true startretries=3
- 生效命令:
sudo supervisorctl update && sudo supervisorctl start myapp
三、内核崩溃转储与自动重启(kdump)
用于生成崩溃转储文件(vmcore
)后自动重启,便于后续调试。
1. 安装与配置 kdump
- 安装工具:
# Debian/Ubuntu sudo apt install linux-crashdump kexec-tools # CentOS/RHEL sudo yum install kexec-tools
- 预留内存:
编辑/etc/default/grub
,添加crashkernel=512M
:GRUB_CMDLINE_LINUX="... crashkernel=512M" sudo update-grub && sudo reboot
- 配置 kdump(
/etc/kdump.conf
):path /var/crash core_collector makedumpfile -l --message-level 1 -d 31
2. 验证与触发
- 检查服务状态:
sudo systemctl status kdump
- 手动触发转储并重启:
echo c > /proc/sysrq-trigger # 生成 vmcore 后自动重启
四、网络异常自动重启
适用于网络链路中断导致服务不可用。
1. 网络检测脚本
- 脚本示例(
/usr/local/bin/network_check.sh
):#!/bin/bash if ! ping -c 3 8.8.8.8 &> /dev/null; thensudo systemctl reboot fi
- 定时任务(
crontab -e
):*/5 * * * * /usr/local/bin/network_check.sh
五、验证与调试
1. 配置验证
- 检查内核参数:
cat /proc/sys/kernel/sysrq # 应为 1 cat /proc/sys/kernel/panic # 应为设定的重启时间(如 10)
- 查看 kdump 状态:
sudo kdump-config status
2. 日志分析
- 内核日志:
dmesg | grep "Kernel panic" journalctl -k --since "1 hour ago"
- 转储文件分析:
crash /usr/lib/debug/boot/vmlinux-$(uname -r) /var/crash/xxx/vmcore
六、注意事项
-
数据安全:
- 强制重启可能导致数据丢失,优先使用
sync
同步数据。 - 生产环境建议结合监控系统(如 Zabbix)告警后再操作。
- 强制重启可能导致数据丢失,优先使用
-
硬件兼容性:
- 确保硬件支持 Watchdog 或 IPMI。
-
测试环境验证:
- 在非生产环境中模拟崩溃(如
kill -9
或echo c
)验证流程。
- 在非生产环境中模拟崩溃(如
附录:命令速查表
场景 | 命令/配置 |
---|---|
强制重启 | echo b > /proc/sysrq-trigger |
生成崩溃转储 | echo c > /proc/sysrq-trigger (需配置 kdump) |
服务自动重启 | systemctl edit myapp → 添加 Restart=always |
网络检测重启 | crontab -e → 添加 */5 * * * * /path/to/network_check.sh |
通过上述配置,可覆盖内核崩溃、服务异常、网络中断等多种场景下的自动重启需求,平衡系统稳定性与恢复效率。
相关文章:
Linux 系统异常触发后自动重启配置指南
Linux 系统异常触发后自动重启配置指南 一、内核级自动重启配置 适用于内核崩溃(Kernel Panic)、硬件驱动故障等场景,通过 SysRq 和 Watchdog 实现快速恢复。 1. SysRq 强制重启 功能:通过触发内核崩溃或强制重启,绕…...

apisix透传客户端真实IP(real-ip插件)
文章目录 apisix透传客户端真实IP需求和背景apisix real-ip插件为什么需要 trusted_addresses?安全架构的最佳实践 示例场景apisix界面配置 apisix透传客户端真实IP 需求和背景 当 APISIX 前端有其他反向代理(如 Nginx、HAProxy、云厂商的 LBÿ…...

Oracle 数据库的默认隔离级别
Oracle 数据库的默认隔离级别 默认隔离级别:READ COMMITTED Oracle 默认使用 读已提交(READ COMMITTED) 隔离级别,这是大多数OLTP(在线事务处理)系统的标准选择。 官方文档 https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/da…...
统计客户端使用情况,使用es存储数据,实现去重以及计数
这篇文件的重点在tshark、filebeat、和logstash。 需求:统计客户使用的客户端版本 实现工具:tshark 1.10.14,filebeat 8.17.0,logstash 8.17.0,elasticsearch 8.17.0,kibana 8.17.0 总体设计:…...

代码随想录算法训练营第六十四天| 图论9—卡码网47. 参加科学大会,94. 城市间货物运输 I
每日被新算法方式轰炸的一天,今天是dijkstra(堆优化版)以及Bellman_ford ,尝试理解中,属于是只能照着代码大概说一下在干嘛。 47. 参加科学大会 https://kamacoder.com/problempage.php?pid1047 dijkstra(…...
oracle序列自增问题
1.先查询表名对应的序列名称 SELECT trigger_name, trigger_type, triggering_event FROM all_triggers WHERE table_name 表名;2. 查询id最大值 SELECT MAX(ID) FROM 表名;3. 查询下一次生成ID SELECT SJCJ_ENERGY_DATA_INSERTID.NEXTVAL FROM DUAL;4. 设置临时步长,越过…...

开启健康生活的多元养生之道
健康养生是一门值得终身学习的学问,在追求健康的道路上,除了常见方法,还有许多容易被忽视却同样重要的角度。掌握这些多元养生之道,能让我们的生活更健康、更有品质。 室内环境的健康不容忽视。定期清洁空调滤网,避…...

【Vite】前端开发服务器的配置
定义一些开发服务器的行为和代理规则 服务器的基本配置 server: {host: true, // 监听所有网络地址port: 8081, // 使用8081端口open: true, // 启动时自动打开浏览器cors: true // 启用CORS跨域支持 } 代理配置 proxy: {/api: {target: https://…...
鸿蒙OSUniApp 制作自定义弹窗与模态框组件#三方框架 #Uniapp
UniApp 制作自定义弹窗与模态框组件 前言 在移动应用开发中,弹窗和模态框是用户交互的重要组成部分,它们用于显示提示信息、收集用户输入或确认用户操作。尽管 UniApp 提供了基础的交互组件如 uni.showModal() 和 uni.showToast(),但这些原…...

Spring Security与Spring Boot集成原理
Spring Security依赖的是过滤器机制,首先是web容器例如tomcat作为独立的产品,本身有自己的一套过滤器机制用来处理请求,那么如何将tomcat接收到的请求转入到Spring Security的处理逻辑呢?spring充分采用了tomcat的拓展机制提供了t…...

VScode各文件转化为PDF的方法
文章目录 代码.py文件.ipynb文本和代码夹杂的文件方法 1:使用 VS Code 插件(推荐)步骤 1:安装必要插件步骤 2:安装 `nbconvert`步骤 3:间接导出(HTML → PDF)本文遇见了系列错误:解决方案:问题原因步骤 1:降级 Jinja2 至兼容版本步骤 2:确保 nbconvert 版本兼容替代…...
精益数据分析(58/126):移情阶段的深度实践与客户访谈方法论
精益数据分析(58/126):移情阶段的深度实践与客户访谈方法论 在创业的漫长旅途中,正确识别和验证问题是成功的第一步。今天,我们继续围绕《精益数据分析》中创业阶段的核心内容,深入探讨移情阶段的关键实践…...

Vue3学习(组合式API——Watch侦听器、watchEffect()详解)
目录 一、Watch侦听器。 (1)侦听单个数据。 (2)侦听多个数据。(数组写法?!) (3)immediate参数。(立即执行回调) (3)deep参数。(深层监…...

【node.js】安装与配置
个人主页:Guiat 归属专栏:node.js 文章目录 1. Node.js简介1.1 Node.js的特点1.2 Node.js架构 2. Node.js安装2.1 下载和安装方法2.1.1 Windows安装2.1.2 macOS安装2.1.3 Linux安装 2.2 使用NVM安装和管理Node.js版本2.2.1 安装NVM2.2.2 使用NVM管理Node…...

《AI大模型应知应会100篇》第62篇:TypeChat——类型安全的大模型编程框架
第62篇:TypeChat——类型安全的大模型编程框架 摘要 在构建 AI 应用时,一个常见的痛点是大语言模型(LLM)输出的不确定性与格式不一致问题。开发者往往需要手动解析、校验和处理模型返回的内容,这不仅增加了开发成本&a…...
HttpMessageConverter 的作用是什么? 它是如何实现请求体到对象、对象到响应体的自动转换的(特别是 JSON/XML)?
HttpMessageConverter (HTTP 消息转换器) 是 Spring MVC 框架中一个非常核心的组件,它的主要作用是在 HTTP 请求和响应体与 Java 对象之间进行双向转换。 核心作用: 读取请求体 (Request Body) 到 Java 对象: 当 Controller 方法的参数使用 …...

EdgeShard:通过协作边缘计算实现高效的 LLM 推理
(2024-05-23) EdgeShard: Efficient LLM Inference via Collaborative Edge Computing (EdgeShard:通过协作边缘计算实现高效的 LLM 推理) 作者: Mingjin Zhang; Jiannong Cao; Xiaoming Shen; Zeyang Cui;期刊: (发表日期: 2024-05-23)期刊分区:本地链接: Zhang 等 - 2024 …...

火山 RTC 引擎9 ----集成 appkey
一、集成 appkey 1、网易RTC 初始化过程 1)、添加头文件 实现互动直播 - 互动直播 2.0网易云信互动直播产品的基本功能包括音视频通话和连麦直播,当您成功初始化 SDK 之后,您可以简单体验本产品的基本业务流程,例如主播加入房间…...
ArcGIS Pro 3.4 二次开发 - 框架
环境:ArcGIS Pro SDK 3.4 .NET 8 文章目录 框架1 框架1.1 如何在 DockPane 可见或隐藏时订阅和取消订阅事件1.2 执行命令1.3 设置当前工具1.4 激活选项卡1.5 激活/停用状态 - 修改条件1.6 判断应用程序是否繁忙1.7 获取应用程序主窗口1.8 关闭 ArcGIS Pro1.9 获取 …...

Adminer:一个基于Web的轻量级数据库管理工具
Adminer 是一个由单个 PHP 文件实现的免费数据库管理工具,支持 MySQL、MariaDB、PostgreSQL、CockroachDB、SQLite、SQL Server、Oracle、Elasticsearch、SimpleDB、MongoDB、Firebird、Clickhouse 等数据库。 Adminer 支持的主要功能如下: 连接数据库服…...

RK3568下QT实现按钮切换tabWidget
运行效果: 在 Qt 应用程序开发过程中,TabWidget 是一种非常实用的 UI 组件,它能够以选项卡的形式展示多个页面内容,帮助我们有效组织和管理复杂的界面布局。而在实际使用时,常常会有通过按钮点击来切换 TabWidget 页面的需求,本文将通过一个完整的示例,详细介绍如何在 Q…...

2025 OceanBase 开发者大会全议程指南
5 月 17 日,第三届 OceanBase 开发者大会将在广州举办。 我们邀请数据库领军者与AI实践先锋,与开发者一起探讨数据库与 AI 协同创新的技术趋势,面对面交流 OceanBase 在 TP、AP、KV 及 AI 能力上的最新进展,深度体验“打破技术栈…...
GitHub 趋势日报 (2025年05月15日)
本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1TapXWorld/ChinaTextbookPDF教材。⭐ 6685⭐ 15287Roff2xming521/WeClone&…...

day017-磁盘管理-实战
文章目录 1. 硬盘命名规则2. 添加硬盘2.1 查看硬盘名称 3. 硬盘分区3.1 分区命名规则:mbr分区表格式3.2 创建分区:fdisk3.2.1 fdisk -l:查看硬盘及分区信息3.2.2 fdisk /dev/sdc :为该硬盘分区3.2.3 创建扩展分区和逻辑分区3.2.4 保存设置并退…...

【成品设计】STM32和UCOS-II的项目
项目1:《基于STM32和UCOS-II的水质监测系统》 Ps:分为带系统版本和不带系统版本,功能都一样。 功能说明: 1. 单片机主控:STM32F103C8T6单片机作为核心控制。 2. 酸碱度传感器:实时采集当前PH值。 3. 水质…...
当通过PHP在线修改文件数组遇到不能及时生效问题
当你通过PHP在线修改文件中的数组(比如配置文件、缓存文件等)后,发现修改不能及时生效,常见原因和解决办法如下: 1. 缓存未刷新 问题描述:PHP应用通常会对配置、数据等做缓存(如Redis、Memcached、OPcache、文件缓存等),导致你修改了文件但实际运行时还是旧内容。解决…...

Ngrok 配置:实现 Uniapp 前后端项目内网穿透
文章目录 一、下载并安装 ngrok二、配置 ngrok Authtoken三、启动本地 uniapp 项目四、使用 ngrok 暴露本地服务五、通过公网 URL 访问项目六、后端API项目的穿透问题排查 (uni-app 后端 API 示例)交互流程图示 七、ngrok Web 界面 (本地监控)八、停止 ngrok总结 ngrok 是一款…...

鸿蒙ArkUI体验:Hexo博客客户端开发心得
最近部门也在跟进鸿蒙平台的业务开发,自己主要是做 Android 开发,主要使用 Kotlin/Java 语言。,需要对新的开发平台和开发模式进行学习,在业余时间开了个项目练手,做了个基于 Hexo 博客内容开发的App。鸿蒙主要使用Ark…...

鸿蒙NEXT开发动画案例10
1.创建空白项目 2.Page文件夹下面新建Spin.ets文件,代码如下: interface TranslateOffset {x?:numbery?:number } /*** SpinKit动画组件 - SpinTen* author: CSDN-鸿蒙布道师* since: 2025/05/16*/ ComponentV2 export struct SpinTen {Require Para…...
Python 的 os 库常见使用方法(操作目录及文件)
前言: os 模块是 Python 标准库中用于与操作系统交互的核心模块,提供了许多操作文件和目录的功能。以下是常见的使用方法: 1. 目录操作 方法功能说明示例os.getcwd()获取当前工作目录print(os.getcwd())os.chdir(path)切换当前工作目录os.ch…...