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
英文地址,請注明出處:http://en.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…