Linux 系统异常触发后自动重启配置指南

news2025/5/21 4:05:59

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; then
      sudo 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
    

六、注意事项

  1. 数据安全

    • 强制重启可能导致数据丢失,优先使用 sync 同步数据。
    • 生产环境建议结合监控系统(如 Zabbix)告警后再操作。
  2. 硬件兼容性

    • 确保硬件支持 Watchdog 或 IPMI。
  3. 测试环境验证

    • 在非生产环境中模拟崩溃(如 kill -9echo 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

通过上述配置,可覆盖内核崩溃、服务异常、网络中断等多种场景下的自动重启需求,平衡系统稳定性与恢复效率。

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

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

相关文章

apisix透传客户端真实IP(real-ip插件)

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

Oracle 数据库的默认隔离级别

Oracle 数据库的默认隔离级别 默认隔离级别:READ COMMITTED Oracle 默认使用 读已提交(READ COMMITTED) 隔离级别,这是大多数OLTP(在线事务处理)系统的标准选择。 官方文档 https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/da…

代码随想录算法训练营第六十四天| 图论9—卡码网47. 参加科学大会,94. 城市间货物运输 I

每日被新算法方式轰炸的一天,今天是dijkstra(堆优化版)以及Bellman_ford ,尝试理解中,属于是只能照着代码大概说一下在干嘛。 47. 参加科学大会 https://kamacoder.com/problempage.php?pid1047 dijkstra&#xff08…

开启健康生活的多元养生之道

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

【Vite】前端开发服务器的配置

定义一些开发服务器的行为和代理规则 服务器的基本配置 server: {host: true, // 监听所有网络地址port: 8081, // 使用8081端口open: true, // 启动时自动打开浏览器cors: true // 启用CORS跨域支持 } 代理配置 proxy: {/api: {target: https://…

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 版本兼容替代…

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…

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 之后,您可以简单体验本产品的基本业务流程,例如主播加入房间…

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 能力上的最新进展,深度体验“打破技术栈…

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. 水质…

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…