菜鸟科技网

Linux启动信息查看命令有哪些?

在Linux系统中,启动信息的查看是系统管理和故障排查的重要环节,通过启动日志可以定位内核初始化、服务加载、硬件识别等阶段的问题,Linux启动过程主要分为BIOS/UEFI阶段、引导加载阶段(如GRUB)、内核初始化阶段(initramfs)和系统服务启动阶段(systemd或SysVinit),不同阶段的信息存储位置和查看方式有所不同,以下是查看Linux启动信息的详细命令及方法,涵盖不同启动阶段和日志管理工具的使用。

Linux启动信息查看命令有哪些?-图1
(图片来源网络,侵删)

查看内核启动信息(dmesg命令)

dmesg命令用于显示内核环缓冲区(kernel ring buffer)中的消息,这些消息记录了系统启动过程中内核的初始化信息,包括硬件检测、驱动加载、文件系统挂载等关键内容。

  • 基础用法
    dmesg

    直接输出所有内核消息,默认按时间顺序显示,最新信息在末尾,由于输出内容较多,通常结合管道和lessgrep等工具使用:

    dmesg | less  # 分页查看
    dmesg | grep -i error  # 过滤包含error的信息(不区分大小写)
  • 过滤特定类型信息
    内核消息按设施(facility)和级别(level)分类,可通过-T选项显示时间戳,-f指定设施,-l指定级别。
    dmesg -T  # 显示可读格式的时间(如"Mon Oct 24 14:35:17 2023")
    dmesg -l err  # 只显示错误级别的消息
    dmesg -f kern  # 只显示内核设施的消息
  • 输出到文件
    若需保存内核启动信息,可重定向输出:
    dmesg > kernel_boot.log

查看系统启动日志(journalctl命令)

journalctl是systemd系统的日志管理工具,用于查看systemd收集的启动日志,包括内核消息、服务启动状态、错误信息等,功能比dmesg更全面。

  • 查看完整启动日志
    journalctl -b  # 显示当前启动周期的日志(从系统启动开始)
    journalctl -b -1  # 显示上一次启动周期的日志
  • 按时间过滤
    journalctl --since "2023-10-24 14:00" --until "2023-10-24 15:00"  # 指定时间范围
    journalctl --since yesterday  # 查看昨日起的日志
  • 按服务或单元过滤
    journalctl -u sshd  # 查看sshd服务的日志
    journalctl -u systemd-networkd  # 查看网络服务日志
  • 结合内核消息
    journalctl -k  # 只显示内核消息(等同于dmesg)
    journalctl -b -k -p err  # 查看当前启动周期内核错误
  • 实时监控启动过程
    journalctl -f  # 实时跟踪日志输出(类似tail -f)

查看GRUB引导加载信息

GRUB是Linux系统常用的引导加载程序,其启动信息通常在屏幕滚动显示,默认会被快速隐藏,可通过以下方式查看:

Linux启动信息查看命令有哪些?-图2
(图片来源网络,侵删)
  • 临时显示启动信息
    在GRUB菜单界面,按E键编辑启动项,找到linuxlinux16/linuxefi行,在行尾添加console=ttyS0,115200(串口输出)或保持默认,然后按Ctrl+X启动,此时启动信息会显示在屏幕上。
  • 查看GRUB配置文件
    GRUB的配置文件位于/boot/grub2/grub.cfg/boot/efi/EFI/ubuntu/grub.cfg(UEFI系统),可通过以下命令查看:
    cat /boot/grub2/grub.cfg | grep -A 5 -B 5 "linux"

查看系统启动流程日志(initramfs阶段)

initramfs(初始内存文件系统)是内核启动到真实根文件系统之间的临时环境,其日志可通过以下方式查看:

  • 查看initramfs执行脚本
    initramfs的执行脚本通常位于/usr/lib/dracut/hooks//etc/dracut.conf.d/,可通过lsinitrd命令查看initramfs镜像内容:
    lsinitrd /boot/initramfs-$(uname -r).img | grep -i "script"  # 查看脚本文件
  • 启用initramfs调试
    修改GRUB启动参数,在linux行添加rd.debugloglevel=7,重启后可通过dmesgjournalctl -k查看详细调试信息。

查看传统SysVinit启动日志

对于使用SysVinit的老旧系统(如CentOS 6),启动日志主要通过以下文件查看:

  • /var/log/messages:系统主要日志文件,包含启动过程中的服务信息。
  • /var/log/dmesg:内核启动信息的副本,与dmesg命令输出内容一致。
  • /var/log/boot.log:记录启动过程中各服务的启动状态。
    查看命令示例:
    tail -f /var/log/messages  # 实时查看系统日志
    grep -i fail /var/log/boot.log  # 查看启动失败的服务

不同启动阶段的日志位置总结

启动阶段 日志位置/命令 说明
内核初始化 dmesgjournalctl -k、/var/log/dmesg 记录硬件检测、驱动加载、文件系统检查等内核级信息
GRUB引导加载 GRUB菜单界面、/boot/grub2/grub.cfg 引导参数、菜单配置信息
initramfs阶段 dmesg(rd.debug参数后)、lsinitrd 临时文件系统加载、关键设备初始化(如磁盘、LVM)
系统服务启动(systemd) journalctl -b、/var/log/journal/ 服务启动顺序、依赖关系、错误状态(默认日志存储在/run/log/journal/)
系统服务启动(SysVinit) /var/log/messages、/var/log/boot.log 传统启动模式下各服务的启动日志

常见问题与注意事项

  1. 日志被快速滚动隐藏
    若启动信息在屏幕上滚动过快,可通过GRUB启动参数loglevel=7提高日志级别,或使用pause参数暂停启动(需修改GRUB配置)。
  2. 日志文件不存在
    对于systemd系统,若/var/log/journal/目录为空,可能是持久化日志未启用,可通过mkdir -p /var/log/journal && journalctl --flush激活。

相关问答FAQs

Q1: 如何区分内核错误和服务启动错误?
A1: 内核错误可通过dmesg | grep -i errorjournalctl -k -p err查看,通常包含硬件故障、驱动加载失败等信息;服务启动错误则通过journalctl -u 服务名/var/log/服务名.log定位,例如journalctl -u nginx查看Nginx服务启动时的错误日志。

Q2: 为什么journalctl -b显示的日志不完整?
A2: 可能的原因包括:① 日志轮转策略导致旧日志被清理,可通过journalctl -b -p err -n 100查看最近100条错误日志;② 系统未正常关机导致日志未保存,建议使用journalctl --flush手动同步日志;③ 磁盘空间不足,可通过journalctl --vacuum-size=100M限制日志大小。

分享:
扫描分享到社交APP
上一篇
下一篇