linux常见故障系列文章 1-linux进程挂掉原因总结和排查思路

问题一 :运行时常见的进程崩溃原因 内存不足)

**0. 内存不足

内存不足(OOM Killer)
排查 OOM:free -h → dmesg → ps aux --sort=-%mem

预防 OOM:限制关键进程内存、调整 OOM Killer 策略、增加 swap

长期优化:监控内存使用、修复内存泄漏、合理分配资源

1. 段错误(Segmentation Fault, SIGSEGV)

原因:进程访问了非法内存地址(如空指针解引用、数组越界、堆栈溢出)。
表现:进程崩溃,日志或终端输出 Segmentation fault (core dumped)
排查方法

dmesg | grep segfault  # 查看内核日志是否有段错误记录
gdb /path/to/program /path/to/core  # 用 GDB 分析 core dump
2. 资源限制(文件描述符、进程数、CPU 时间等)

原因

  • 文件描述符(FD)耗尽(Too many open files
  • 用户进程数超限(fork: retry: Resource temporarily unavailable
  • CPU 或运行时间超限(CPU time limit exceeded

排查方法

ulimit -a                  # 查看当前 shell 的资源限制
cat /proc/<PID>/limits     # 查看某个进程的限制
cat /proc/sys/fs/file-nr  # 查看系统文件描述符使用情况
3. 动态链接库缺失或版本不匹配

原因

  • 程序依赖的 .so 文件缺失(error while loading shared libraries
  • 库版本不兼容(version GLIBC_2.34’ not found`)

排查方法

ldd /path/to/program       # 检查缺失的依赖库
apt-file search libxxx.so  # 查找缺失库属于哪个包(Debian/Ubuntu)
yum provides */libxxx.so   # (RHEL/CentOS)
4. 配置错误(错误的配置文件、环境变量)

原因

  • 配置文件语法错误(如 JSON/XML/YAML 格式错误)
  • 关键环境变量未设置(如 DATABASE_URL 为空)

排查方法

strace -f -e trace=file /path/to/program  # 跟踪程序读取的配置文件
env | grep KEY      # 检查环境变量
journalctl -xe      # 查看 systemd 服务的错误日志
5. 信号终止(SIGKILL、SIGTERM、SIGABRT)

原因

  • 被管理员 kill -9(SIGKILL)
  • 程序自身调用 abort()(SIGABRT)
  • 超时被监控工具杀死(如 systemdTimeoutStopSec

排查方法

dmesg | grep -i "killed"  # 检查是否被 OOM Killer 或管理员杀死
journalctl -u service_name  # 查看 systemd 服务的终止原因

问题2:Core Dump 的作用,以及 supervisor 和 systemctl 的区别

1. Core Dump 的作用

Core Dump 是进程崩溃时的内存快照,包含崩溃时的堆栈、变量值等信息,用于调试。

如何设置和查看?

# 检查当前是否允许生成 core dump
ulimit -c  # 如果是 0,则禁止生成# 临时允许 core dump(当前会话有效)
ulimit -c unlimited# 永久生效(修改 /etc/security/limits.conf)
echo "* soft core unlimited" >> /etc/security/limits.conf# 指定 core dump 保存路径
echo "/tmp/core-%e-%p-%t" > /proc/sys/kernel/core_pattern# 查看已生成的 core dump(systemd 系统)
coredumpctl list
coredumpctl info <PID>
2. supervisor vs systemctl
对比项systemctl (systemd)supervisor
用途系统级服务管理(默认集成在 Linux)进程监控(适合 Python、Node.js 等应用)
自动重启支持(Restart=on-failure支持(autorestart=true
日志管理通过 journalctl 查看自定义日志文件
依赖管理支持(After=network.target不支持
适用场景系统服务(如 nginx、MySQL)用户级进程(如 Python 脚本、后台任务)

示例:supervisor 配置/etc/supervisor/conf.d/myapp.conf

[program:myapp]
command=/usr/bin/python3 /opt/myapp/main.py
autorestart=true
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log

总结

  • Core Dump 用于调试崩溃原因,需手动开启。
  • systemctl 适合管理系统服务,supervisor 更适合监控用户级进程(如开发环境)。

如果你的进程频繁崩溃,建议:

  1. 开启 core dump 分析崩溃原因
  2. supervisorsystemd 自动重启
  3. 检查日志(journalctldmesg)定位问题
    如何获取挂掉的 PID?
    方法 适用场景 命令示例
    dmesg OOM Killer 杀死进程 dmesg | grep -i “killed”
    journalctl systemd 托管服务崩溃 journalctl -xe | grep “exit”
    coredumpctl 进程崩溃生成 core dump coredumpctl list
    ps/pgrep 查找僵尸进程或最近运行的进程 ps aux | grep -w Z
    auditd 审计进程退出事件 ausearch -k process_exit
    supervisor 托管进程崩溃记录 supervisorctl status
    如果 PID 经常丢失,建议:

启用 core dump(ulimit -c unlimited)

使用进程管理工具(如 systemd / supervisor)

部署监控告警(如 Prometheus + Alertmanager)

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

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

相关文章

Spring Cloud Gateway 路由与过滤器实战:转发请求并添加自定义请求头(最新版本)

前言 网关是什么?如果把你的系统比作一栋高端写字楼,网关就是那位神通广大的前台小姐姐,笑容可掬地拦住不速之客,把贵宾引到豪华会议室,还会在你胸口贴上一枚醒目的“贵宾”标签。它既懂礼数,又有原则,能过滤无效请求、转发正确目标,还能在途中动点“小手脚”,比如加…

达梦数据库慢SQL日志收集和分析

达梦数据库慢SQL日志收集和分析 开启SQL日志记录 使用DMLOG工具分析SQLLOG DMLOG安装配置 DMLOG分析日志 系统视图V$LONG_EXEC_SQLS记录了最近1000条执行时间超1s的sql。如果sql语句超长可能会被截断,只能从sqllog里找完整的sql文本。 SELECT * FROM V$LONG_EXEC_SQLS ORDER …

一篇文章,带你玩转SparkCore

Spark Core 概念 前言 批处理&#xff08;有界数据&#xff09; ​ 对静态的、有限的数据集进行一次性处理&#xff0c;数据通常按固定周期&#xff08;如每小时、每天&#xff09;收集后统一计算。 特点&#xff1a; 高吞吐量&#xff0c;适合大规模数据。高延迟&#xff08;数…

VRRP技术

VRRP的概念及应用场景 VRRP&#xff08;虚拟路由冗余协议&#xff09;概念 VRRP&#xff08;Virtual Router Redundancy Protocol&#xff0c;虚拟路由冗余协议&#xff09;是一种路由容错协议&#xff0c;用于在多个路由器之间提供网关冗余&#xff0c;确保当主路由器故障时&a…

表驱动法-灵活编程范式

表驱动法&#xff1a;从理论到实践的灵活编程范式 一、为什么需要表驱动法&#xff1f; 在处理多分支逻辑&#xff08;如消息解析、命令分发&#xff09;时&#xff0c;传统的 if-else 或 switch-case 存在明显局限&#xff1a; 当分支数量庞大&#xff08;如成百上千条命令&am…

零基础-动手学深度学习-10.2. 注意力汇聚:Nadaraya-Watson 核回归

上节介绍了框架下的注意力机制的主要成分 图10.1.3&#xff1a; 查询&#xff08;自主提示&#xff09;和键&#xff08;非自主提示&#xff09;之间的交互形成了注意力汇聚&#xff1b; 注意力汇聚有选择地聚合了值&#xff08;感官输入&#xff09;以生成最终的输出。 本节将…

nginx高新能web服务器

一、Nginx 概述和安装 Nginx是免费的、开源的、高性能的HTTP和反向代理服务器、邮件代理服务器、以及TCP/UDP代理服务器。 Nginx 功能介绍 静态的web资源服务器html&#xff0c;图片&#xff0c;js&#xff0c;css&#xff0c;txt等静态资源 http/https协议的反向代理 结合F…

Unity大型场景性能优化全攻略:PC与安卓端深度实践 - 场景管理、渲染优化、资源调度 C#

本文将深入探讨Unity在大型场景中的性能优化策略&#xff0c;涵盖场景管理、渲染优化、资源调度等核心内容&#xff0c;并提供针对PC和安卓平台的优化方案及实战案例。 提示&#xff1a;内容纯个人编写&#xff0c;欢迎评论点赞。 文章目录1. 大型场景性能挑战1.1 性能瓶颈定位…

Java集合框架、Collection体系的单列集合

Java集合框架、Collection1. 认识Java集合框架及结构1.1 集合框架整体结构1.2 集合框架的核心作用2. Collection的两大常用集合体系及各个系列集合的特点2.1 List系列集合&#xff08;有序、可重复&#xff09;2.2 Set系列集合&#xff08;无序、不可重复&#xff09;3. Collec…

HTML <picture> 元素:让图片根据设备 “智能切换” 的响应式方案

在响应式设计中&#xff0c;图片适配是一个绕不开的难题&#xff1a;同一张高清图片在大屏设备上清晰美观&#xff0c;但在小屏手机上可能加载缓慢&#xff1b;而适合手机的小图在桌面端又会模糊失真。传统的解决方案往往需要用JavaScript判断设备尺寸并动态替换图片源&#xf…

Spring Boot 监控与日志管理实战

在 Spring Boot 应用开发中&#xff0c;指标监控和日志管理是保障应用稳定运行的核心环节。指标监控能实时掌握应用健康状态、性能瓶颈&#xff0c;日志管理则用于问题排查和安全审计。本文基于 Spring Boot 提供的 Actuator 监控工具、Spring Boot Admin 可视化平台&#xff0…

【排序算法】②希尔排序

系列文章目录 第一篇&#xff1a;【排序算法】①直接插入排序-CSDN博客 第二篇&#xff1a;【排序算法】②希尔排序-CSDN博客 第三篇&#xff1a;【排序算法】③直接选择排序-CSDN博客 第四篇&#xff1a;【排序算法】④堆排序-CSDN博客 第五篇&#xff1a;【排序算法】⑤冒…

Linux Shell为文件添加BOM并自动转换为unix格式

1.添加并查看BOM添加bomvim -c "set bomb|set fileencodingutf-8|wq" ./gradlew查看bomhead -c 3 ./gradlew | hexdump -C2.安装dos2unix并转换为unix格式安装sudo apt install dos2unix转换dos2unix ./gradlew

华清远见25072班C语言学习day5

重点内容&#xff1a;数组&#xff1a;为什么有数组&#xff1f;为了便于存储多个数据特点&#xff1a;连续存储多个同种数据类型元素(连续指内存地址连续)数组名&#xff1a;数组中首元素的地址&#xff0c;是一个地址常量。一维整形数组&#xff1a;定义&#xff1a;数据类型…

安全守护,温情陪伴 — 智慧养老产品上新

- 养老智慧看护终端接入萤石开放平台 - 在2025 ECDC萤石云开发者大会&#xff0c;萤石产品经理已经介绍了基于萤石云服务AI能力适老化设备的养老智能能力开放。 而今天&#xff0c;养老智慧看护终端再升级&#xff0c;集成跌倒检测、物理隐私遮蔽、火柴人遮蔽、AI语音智能体…

鸿蒙flutter项目接入极光推送

推送的自分类权益 需要审核15个工作日&#xff0c;实际约3个工作日 项目使用极光推送flutter代码&#xff0c;代码端已经配置的东西&#xff08;需要配置flutter端和对应各自平台原生端&#xff09;&#xff0c;我的工程是多target&#xff0c;所以和单target有一点不同。 一、…

2025牛客多校第八场 根号-2进制 个人题解

J.根号-2进制 #数学 #FFT 思路 赛后发现身边的同学都是通过借位来解决进位问题的&#xff0c;在此提供一种全程不出现减法的顺推做法 首先A,BA,BA,B可以理解为两个多项式&#xff1a;A0A1−2A2(−2)2…A_{0}A_{1}\sqrt{ -2 }A_{2}(\sqrt{ -2 })^2\dotsA0​A1​−2​A2​(−…

DataEase官方出品丨SQLBot:基于大模型和RAG的智能问数系统

2025年8月7日&#xff0c;DataEase开源项目组发布SQLBot开源项目&#xff08;github.com/dataease/SQLBot&#xff09;。SQLBot是一款基于大语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;和RAG&#xff08;Retrieval Augmented Generation&#xff0c;…

第十四节 代理模式

在代理模式&#xff08;Proxy Pattern&#xff09;中&#xff0c;一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中&#xff0c;我们创建具有现有对象的对象&#xff0c;以便向外界提供功能接口。介绍意图&#xff1a;为其他对象提供一种代理以控制对…

训推一体 | 暴雨X8848 G6服务器 x Intel®Gaudi® 2E AI加速卡

近日&#xff0c;暴雨信息携手英特尔&#xff0c;针对Gaudi 2E AI加速器HL-288 PCIe卡&#xff08;简称IntelGaudi 2E PCIe卡&#xff0c;下同&#xff09;完成专项调优与适配工作&#xff0c;并重磅推出Intel Eagle Stream平台4U8卡解决方案。该方案通过软硬件协同优化&#x…