怎样快速查看通用日志?

Linux系统宕机原因排查指南

当Linux服务器意外宕机时,快速定位原因对恢复服务至关重要,以下是详细的排查方法,按优先级排序:


查看系统日志(关键入口)

系统日志是首要排查点,存储路径因发行版而异:

tail -n 100 /var/log/syslog       # Ubuntu/Debian
# 内核专属日志
grep -i "error\|panic\|oom\|segfault" /var/log/kern.log

重点关注

  • kernel panic:内核级致命错误
  • Out of memory (OOM):内存耗尽
  • segfault:应用程序内存越界
  • 硬件错误(如I/O errorCPU soft lockup

使用 dmesg 分析内核缓冲

内核环形缓冲区记录崩溃前的最后信息:

dmesg -T | tail -n 200  # -T 显示可读时间戳

典型场景

  • 硬件故障SMART failure(硬盘)、EDAC MC Error(内存)
  • 驱动问题NMI watchdogBUG: soft lockup
  • 资源枯竭oom-killer进程名

检查系统服务日志(systemd 环境)

使用 journalctl 查询服务崩溃记录:

journalctl -b -1 -p 3  # 查看上次启动(-b -1)的错误(priority 3以上)
journalctl -k --since "2 hours ago"  # 仅内核日志

分析内存转储文件(高级诊断)

若配置了 kdump,内存转储文件在 /var/crash/ 目录:

crash /var/crash/vmcore /usr/lib/debug/lib/modules/$(uname -r)/vmlinux

操作示例

crash> bt    # 查看崩溃时的调用栈
crash> ps    # 显示崩溃瞬间的进程状态

⚠️ 前提条件:需提前配置kdump(官方配置指南)


硬件健康检查

  • 硬盘状态
    smartctl -a /dev/sda | grep -e "Reallocated_Sector" -e "Pending_Sector"
  • 内存测试
    memtester 1G 1    # 测试1GB内存(需安装memtester)
  • 服务器硬件日志
    ipmitool sel list  # 需硬件支持IPMI

资源使用回溯

通过 sar(sysstat包)查看历史资源数据:

sar -r -u -q -f /var/log/sa/sa$(date +%d -d yesterday)  # 查看昨日数据

关键指标

  • %memused >95% → 内存耗尽
  • runq-sz > CPU核心数 → CPU过载
  • await > 100ms → 磁盘I/O瓶颈

常见宕机原因速查表

现象 可能原因 验证命令
系统无响应 内存耗尽/OOM dmesg | grep -i oom
强制重启 硬件故障(CPU/内存) dmidecode -t memory
内核崩溃 驱动或内核bug modinfo 驱动名
文件系统只读 磁盘损坏 smartctl -a /dev/sda
SSH断开后无法连接 网络或高负载 sar -n DEV 1 3

预防建议

  1. 监控配置:部署Prometheus+Alertmanager监控内存/磁盘/CPU阈值
  2. 内核调优
    echo "vm.panic_on_oom=0" >> /etc/sysctl.conf  # 禁用OOM时panic
    echo "kernel.sysrq=1" >> /etc/sysctl.conf     # 启用SysRq紧急调试
  3. 定期维护
    • 更新内核:yum update kernel / apt upgrade linux-image-generic
    • 检查硬件:每月执行smartctlmemtester

引用说明

  • 内核文档:Kernel Crash Dump Guide
  • 系统调试工具:sysstat、crash、ipmitool 官方手册
  • 最佳实践参考:Red Hat Troubleshooting Guide

通过系统日志、硬件检查、资源分析三管齐下,90%的宕机原因可被快速定位,复杂场景建议结合crash工具深度分析转储文件。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8740.html

(0)
酷番叔酷番叔
上一篇 2025年7月26日 15:04
下一篇 2025年7月26日 15:30

相关推荐

  • Linux下如何彻底删除JDK并清理环境变量及残留配置?

    在Linux系统中删除JDK(Java Development Kit)是常见的系统维护操作,可能由于版本升级、环境冲突或不再需要Java开发环境等原因,删除JDK时,需根据安装方式(包管理器安装或手动解压安装)选择不同方法,并注意清理相关环境变量,避免残留文件影响系统,以下是详细的删除步骤和注意事项,删除前的……

    2025年10月4日
    11900
  • C程序编译失败怎么办,如何快速编译C程序,C语言编译卡住怎么解决,为什么C程序编译总报错,编译C程序有哪些技巧

    在Linux系统中,Makefile是自动化编译的核心工具,它通过定义规则(目标、依赖和命令)来管理项目构建流程,以下是详细使用指南:Makefile基础结构 gcc main.o utils.o -o app # 命令(必须用Tab缩进)main.o: main.c gcc -c main.cutils.o……

    2025年7月5日
    11900
  • Linux系统如何进行文件的上传与下载操作?

    在Linux系统中,文件的上传与下载是日常运维和开发中的常见操作,涉及本地与远程服务器、不同协议间的数据传输,根据场景需求,可通过命令行工具高效完成批量操作,或借助图形界面工具实现可视化拖拽,以下详细介绍各类方法,命令行工具:高效灵活的传输方案命令行工具是Linux环境下最常用的传输方式,尤其适合服务器无图形界……

    2025年10月6日
    9600
  • Linux下如何使用GDB调试程序?

    在Linux系统中,GDB(GNU Debugger)是功能强大的调试工具,主要用于调试C、C++、Go等语言编写的程序,通过GDB,开发者可以控制程序执行、设置断点、查看变量值、分析内存状态等,从而快速定位程序中的bug,以下将详细介绍GDB的使用方法,从安装到高级功能,帮助开发者掌握这一工具,安装GDB在使……

    2025年9月18日
    13000
  • linux下如何加载库文件

    Linux 下,可使用 ldconfig命令更新动态链接库缓存,或设置 `

    2025年8月19日
    13900

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信