如何查看Linux系统的重启记录?

在Linux系统中,查看重启记录是系统运维和故障排查中的常见需求,通过记录可以快速定位系统异常、服务中断等问题,Linux系统重启时会将相关信息记录到日志文件或系统命令输出中,本文将详细介绍多种查看方法,包括常用命令、日志文件解析及不同场景下的适用技巧。

如何查看linux重启记录

通过last命令查看重启记录

last命令是Linux系统中查看用户登录、关机、重启等信息的基础工具,其数据来源为/var/log/wtmp文件(二进制格式,记录所有登录、关机、重启事件)。

基本用法

直接执行last命令会显示所有登录、重启、关机记录,其中包含重启信息的行通常以reboot关键字开头:

last reboot

输出示例:

reboot   system boot  5.15.0-88-generic Tue Dec 5 10:30 still running  
reboot   system boot  5.15.0-88-generic Mon Dec 4 18:45 - 10:30 (15:45)  
reboot   system boot  5.15.0-88-generic Sun Dec 3 09:20 - 18:45 (9:25)  

各列含义说明:

  • 第一列:reboot(标识重启事件)
  • 第二列:system boot(系统启动方式,与内核启动相关)
  • 第三列:内核版本(如15.0-88-generic
  • 第四、五列:重启时间(如Tue Dec 5 10:30
  • 第六列:持续时间(如still running表示系统仍在运行,或15:45表示上次运行时长)

高级参数

  • -n:限制显示行数,如last reboot -n 10显示最近10次重启记录。
  • -t:按时间范围筛选,如last reboot -t "2023-12-01 00:00:2023-12-05 23:59"
  • -i:显示IP地址(若通过远程重启,可查看客户端IP)。

注意事项

/var/log/wtmp文件大小有限,默认保留最近的事件记录,若系统长期未重启或文件被清理,可能无法查到早期记录。

通过journalctl查看系统重启日志(systemd系统)

现代Linux发行版(如Ubuntu 16.04+、CentOS 7+)多采用systemd作为初始化系统,journalctl是systemd的日志管理工具,可查看内核、服务及系统事件的详细日志,包括重启过程中的关键信息。

如何查看linux重启记录

基本用法

查看所有与重启相关的系统日志:

journalctl -u systemd-reboot.service -b
  • -u systemd-reboot.service:指定查看重启服务日志。
  • -b:显示当前启动周期的日志(-b -1显示上次启动周期)。

常用过滤条件

  • 按时间范围:journalctl --since "2023-12-01" --until "2023-12-05" -p err | grep reboot
  • 查看内核重启原因:journalctl -k | grep -i "reboot|restart"
  • 显示详细日志时间戳:journalctl -u systemd-reboot.service -b -b --no-pager

示例输出

Dec 05 10:30:01 localhost systemd[1]: Stopped target System Reboot.  
Dec 05 10:30:01 localhost systemd[1]: Reached target System Reboot.  
Dec 05 10:30:01 localhost systemd[1]: Starting System Reboot...  
Dec 05 10:30:05 localhost kernel: Rebooting from kernel  

通过日志可定位重启触发者(如用户手动执行reboot、内核panic、服务崩溃等)。

解析/var/log/messages/var/log/syslog文件

传统Linux系统(或未使用systemd的系统)会将系统运行日志记录到/var/log/messages(CentOS/RHEL)或/var/log/syslog(Ubuntu/Debian)中,重启事件通常包含在这些文件中。

查看方法

使用grep命令过滤重启关键字:

# CentOS/RHEL
grep -i "reboot|restart|going down" /var/log/messages
# Ubuntu/Debian
grep -i "reboot|restart|going down" /var/log/syslog

关键字说明

  • reboot:手动重启命令触发。
  • Restarting system:系统服务重启导致的系统重启。
  • Going down for reboot:关机/重启前的系统提示。

处理日志轮转

日志文件会定期轮转(如/var/log/messages.1/var/log/messages.2.gz),需结合zcat查看压缩的历史日志:

zcat /var/log/messages.1.gz | grep -i reboot

通过dmesg查看内核重启信息

dmesg命令用于显示内核环缓冲区(kernel ring buffer)的信息,重启时内核的启动参数、硬件检测、错误信息等会被记录,适合排查内核层面的重启原因。

如何查看linux重启记录

基本用法

dmesg | grep -i "reboot|restart|panic"

示例输出

[    0.000000] Linux version 5.15.0-88-generic (buildd@lcy01-amd64-015) (gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #98-Ubuntu SMP Mon Oct 9 15:08:34 UTC 2023  
[    5.123456] systemd[1]: Reached target System Reboot.  
[    5.234567] systemd[1]: Starting System Reboot...  
[   10.987654] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000200  

若输出包含Kernel panicOops,则可能是内核错误导致重启;若显示systemd相关日志,则与系统服务相关。

常用命令对比及适用场景

为方便选择工具,以下通过表格对比不同方法的优缺点及适用场景:

命令/文件 作用 优点 缺点 适用场景
last reboot 查看重启时间及用户记录 简单直观,无需额外参数 依赖wtmp文件,信息有限 快速查看最近重启时间及次数
journalctl 查看系统重启详细日志 信息全面,支持过滤,适合systemd 仅限systemd系统,命令参数较多 定位重启原因(服务/内核错误)
/var/log/messages 查看系统日志中的重启事件 可追溯历史日志(结合轮转文件) 需手动过滤关键字,日志量大时效率低 传统系统或需长期分析重启记录
dmesg 查看内核重启信息 直观显示内核错误及硬件信息 仅限内核层面,无用户操作记录 排查内核panic或驱动问题导致的重启

注意事项

  1. 权限问题:查看/var/log/下的系统日志通常需要root权限,普通用户需通过sudo执行命令。
  2. 日志清理:系统会定期清理旧日志(如logrotate工具),若需长期保存,需配置日志轮转策略。
  3. 发行版差异:不同Linux发行版的日志路径和默认日志服务可能不同(如RHEL用syslog,Ubuntu用rsyslog),需根据实际情况调整命令。

相关问答FAQs

Q1:为什么last reboot命令看不到重启记录?
A:可能原因包括:

  • /var/log/wtmp文件被清空或损坏(可通过file /var/log/wtmp检查文件格式是否正常)。
  • 系统未正常重启(如断电导致未记录到wtmp)。
  • 使用了非last兼容的日志系统(如systemd的journalctl未同步到wtmp)。
    可尝试通过journalctl -u systemd-reboot.service或检查/var/log/syslog替代。

Q2:如何查看特定时间范围内的重启记录?
A:根据使用的工具选择不同方法:

  • last命令:last reboot -t "YYYY-MM-DD HH:MM:YYYY-MM-DD HH:MM"(如last reboot -t "2023-12-01 10:00:2023-12-05 18:00")。
  • journalctljournalctl --since "YYYY-MM-DD HH:MM" --until "YYYY-MM-DD HH:MM" -u systemd-reboot.service
  • 日志文件:grep "reboot" /var/log/messages | grep "2023-12-01"(需结合时间关键字手动筛选)。

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

(0)
酷番叔酷番叔
上一篇 1小时前
下一篇 1小时前

相关推荐

  • 如何更新软件源?

    在Linux系统中,”升级到1.8″通常指安装或升级Java开发环境至JDK 1.8(即Java 8),这是企业级应用和开发工具的常见需求,若您指Linux内核版本1.8,需注意该版本发布于1994年,已严重过时且无安全支持,强烈建议升级至现代稳定版本(如6.x),以下是两种场景的详细操作指南:安装Java J……

    2025年8月3日
    2400
  • Linux中如何正确使用转义字符?

    在Linux系统中,转义字符是一种特殊的语法机制,用于改变字符的原始含义,使其作为普通字符而非特殊符号处理,Linux命令行和脚本中,许多字符(如、、、空格等)具有预定义的特殊功能,若需使用这些字符的字面值,必须通过转义字符告知系统“此处无需解析特殊含义”,本文将详细解析Linux中转义字符的类型、使用场景及注……

    5天前
    700
  • linux qt如何静态编译

    Qt 静态编译需配置 `.

    2025年8月18日
    1200
  • 如何用U盘安装Linux系统?

    准备工作(关键步骤)所需工具容量≥8GB的U盘(建议USB 3.0)一台可联网的电脑(Windows/macOS/Linux均可)目标安装电脑(确保支持USB启动)选择Linux发行版新手推荐:Ubuntu、Linux Mint(界面友好)进阶选择:Fedora、Debian官方下载(确保安全):Ubuntu……

    2025年7月9日
    3000
  • Linux网络配置存在哪里?多个文件!

    核心配置文件位置传统配置(ifconfig)文件路径:/etc/network/interfaces适用系统:Debian/Ubuntu旧版查看命令: cat /etc/network/interfacesNetplan配置(主流)文件路径:/etc/netplan/*.yaml适用系统:Ubuntu 18.0……

    2025年6月26日
    3500

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信