1. 日志文件的作用

  • /var/log/messages

    • 内容:系统日志,记录系统运行状态、服务启动/停止、错误、警告等信息。
    • 优先级:按级别(紧急、重要、通知)排序,便于快速定位问题。
    • 典型错误:服务崩溃、权限问题、配置错误等。
  • dmesg

    • 内容:内核日志,记录硬件故障、驱动错误、系统内核异常等底层信息。
    • 优先级:按时间顺序记录,便于追踪问题发生的时间点。
    • 典型错误:硬件故障(如磁盘坏块)、驱动冲突、内核 panic 等。

2. 查看日志的常用命令

  • 查看系统日志

    cat /var/log/messages
    # 或使用 tail 命令实时追加
    tail -f /var/log/messages
  • 查看内核日志

    dmesg
    # 或使用 journalctl 命令(Linux 5.0+)
    journalctl -x  # 显示详细信息
    journalctl -b  # 显示当前系统日志

3. 日志关键信息解读

  • 系统日志(/var/log/messages)

    • 关键字段:

      • Feb 15 08:30:00 server kernel: [16524] type=16000 audit(08:30:00): msg="..."
      • Feb 15 08:30:00 server systemd: Failed to start NetworkManager.service.
    • 常见问题:服务启动失败、权限不足、配置错误等。
  • 内核日志(dmesg)

    • 关键字段:

      • Feb 15 08:30:00 server kernel: [16524] CPU 0: PMU: Bad block at 0x00000000
      • Feb 15 08:30:00 server kernel: [16524] type=16000 audit(08:30:00): msg="..."
    • 常见问题:硬件故障(磁盘坏块)、驱动冲突、内核 panic 等。

4. 日志排查步骤

  1. 立即查看日志

    • 使用 dmesg 或 journalctl 查看系统崩溃时的内核日志。
    • 示例:journalctl -x | grep "error"
  2. 定位问题根源

    • 系统日志:检查服务状态(如 systemctl status)、权限问题(如 ls -l)。
    • 内核日志:确认硬件故障(如磁盘坏块)或驱动冲突(如 modinfo)。
  3. 结合工具排查

    • 使用 netstat/ss 检查网络连接异常。
    • 使用 top/htop 查看资源耗尽(如内存、CPU)。

5. 常见问题及应对

  • 问题:系统崩溃后无法启动

    • 解决:检查 /var/log/messages 中的 systemd 或 init 服务日志,确认是否因配置错误或依赖服务缺失。
  • 问题:硬件故障(如磁盘坏块)

    • 解决:通过 dmesg 查看硬件错误,结合 lsblk/fdisk 检查磁盘状态。

6. 实操建议

  • 定期检查日志:使用 tail -f /var/log/messages 实时监控系统日志。
  • 日志轮转配置:

    sudo nano /etc/logrotate.conf
    # 示例配置
    /var/log/messages {
        rotate 7
        daily
        compress
        delaycompress
        missingok
        notifempty
        create 0640 0640
    }
  • 结合工具:使用 grep 筛选关键信息(如 grep "error" /var/log/messages)。

总结

  • 系统崩溃排查的核心:通过 /var/log/messages 和 dmesg 快速定位问题根源(硬件/软件/配置)。
  • 关键技巧:

    • 使用 journalctl -x 查看详细日志。
    • 结合 dmesg 分析硬件故障。
    • 优先检查系统日志,再深入内核日志。

掌握这些要点,可高效应对系统崩溃的故障排查场景。