在Linux操作系统中如何查看系统全部重启的详细历史记录?

在Linux系统管理中,掌握系统重启记录的查看方法至关重要,无论是排查故障、分析系统稳定性,还是审计系统操作,都需要准确获取重启时间、原因及相关日志信息,Linux系统通过多种机制记录重启事件,本文将详细介绍不同场景下查看重启记录的实用方法,涵盖命令工具、日志文件及过滤技巧,帮助用户根据需求选择合适方案。

linux 如何查看重启记录

使用last命令查看重启记录

last是Linux系统中查看用户登录、系统关机及重启历史记录的常用命令,其数据来源为/var/log/wtmp文件(二进制格式,记录登录、关机、重启等事件),默认执行last会显示所有历史记录,包括用户登录、系统关机和重启事件,其中重启记录的用户名通常显示为reboot,终端显示为system boot。

常用参数及示例

  • 查看所有重启记录:last reboot,输出包含重启时间、终端位置、持续时间等信息。
    reboot   system boot  5.15.0-88-generic Tue Oct 10 14:30 still running  
    reboot   system boot  5.15.0-88-generic Mon Oct 9 09:15 - 14:29 (1+05:14)  

    第一列reboot表示事件类型,第二列system boot表示启动方式,第三列内核版本,第四列重启时间,第五列持续时间(still running表示系统仍在运行)。

  • 限制显示行数:last reboot -n 5仅显示最近5次重启记录。
  • 指定日志文件:若/var/log/wtmp路径异常,可通过-f参数指定,如last reboot -f /var/log/wtmp.1(查看轮转后的日志文件)。

注意事项

/var/log/wtmp文件会随系统运行持续增长,管理员可通过logrotate工具配置轮转策略(如每周轮转、保留4周),避免占用过多磁盘空间,若文件损坏或缺失,last命令将无法读取重启记录。

分析/var/log/wtmp和/var/log/btmp文件

/var/log/wtmp是记录重启、登录、关机的核心文件,而/var/log/btmp记录失败登录事件(与重启无关),虽然wtmp为二进制文件无法直接查看,但可通过strings命令提取文本信息:

strings /var/log/wtmp | grep reboot

输出结果可能包含重启时间戳和终端信息,但格式不如last命令直观,可通过ls -l /var/log/wtmp查看文件修改时间,若修改时间早于系统实际重启时间,可能暗示日志文件异常或被篡改。

linux 如何查看重启记录

使用journalctl查看systemd系统的重启日志

对于采用systemd初始化系统的Linux发行版(如Ubuntu 16.04+、CentOS 7+),journalctl是查看系统日志的核心工具,重启记录会被结构化存储在systemd日志中。

常用命令及场景

  • 查看重启服务日志:journalctl -u systemd-reboot.service,显示systemd重启服务的详细日志,包含启动时间、依赖服务状态及错误信息。
  • 查看本次启动以来的日志:journalctl -b,结合-p err可筛选本次启动中的错误日志(如导致重启的内核panic或服务崩溃):
    journalctl -b -p err | grep -i reboot
  • 查看内核消息:journalctl -k,显示内核环缓冲区中的消息,重启时的硬件初始化、驱动加载信息(如[ 0.123456] Linux version 5.15.0-88-generic)会在此记录。
  • 按时间范围过滤:journalctl --since "2023-10-01 00:00:00" --until "2023-10-31 23:59:59" -u systemd-reboot,查看指定月份的重启日志。

优势

journalctl支持日志持久化(存储在/var/log/journal/)、优先级过滤(如-p emerg至-p debug)、字段匹配(如_SYSTEMD_UNIT=systemd-reboot.service),适合深入分析重启原因。

通过uptime和dmesg辅助判断

  • uptime命令:显示系统当前运行时间、登录用户数等信息,其up字段可辅助判断是否发生重启,若系统显示up 2 min,且管理员未手动重启,则可能发生了意外重启,但该命令无法直接显示重启时间,仅能作为初步判断工具。
  • dmesg命令:查看内核环缓冲区消息,重启时的内核启动参数、硬件检测错误(如[ 1.567890] ACPI: [Firmware Bug])会被记录,通过dmesg -T可添加时间戳,便于定位重启时间点:
    dmesg -T | grep "Linux version"

    输出类似[Tue Oct 10 14:30:15 2023] Linux version 5.15.0-88-generic (buildd@lcy01-amd64-013)的信息,可确定最近一次启动的内核版本和时间。

检查syslog或rsyslog日志

对于使用syslog或rsyslog的旧版系统(如CentOS 6及更早版本),重启记录可能保存在/var/log/syslog或/var/log/messages中,通过grep搜索关键词可提取相关信息:

grep -i "reboot|systemd.*reboot" /var/log/syslog

或搜索内核重启消息:

linux 如何查看重启记录

grep "Kernel is restarting" /var/log/messages

此类日志通常包含系统服务的启动停止状态,但需注意日志可能因轮转而分散在多个文件中(如/var/log/syslog.1、/var/log/syslog.2.gz)。

不同方法对比总结

为方便选择,以下表格总结各方法的适用场景及特点:

方法名称 适用场景 命令示例 说明 优点 缺点
last 快速查看重启时间列表 last reboot -n 5 重启时间、终端、持续时间 简单直观,无需额外工具 无法查看重启原因,依赖wtmp文件
journalctl systemd系统,分析重启原因 journalctl -u systemd-reboot -b 结构化日志,含时间、服务、错误 日志详细,支持多维度过滤 仅适用于systemd系统
dmesg 查看内核启动信息 dmesg -T | grep reboot 内核消息,时间戳 可定位硬件/驱动问题 需手动筛选信息
uptime 快速判断是否重启 uptime 系统运行时间 极简,快速判断 无法显示具体时间
grep syslog syslog系统,旧版Linux grep reboot /var/log/syslog 服务/内核日志 兼容旧系统 日志分散,需手动搜索

相关问答FAQs

问题1:为什么执行last reboot看不到重启记录?
解答:可能原因包括:

  1. /var/log/wtmp文件不存在或损坏:可通过ls -l /var/log/wtmp检查,若不存在需手动创建(touch /var/log/wtmp)并设置权限(chmod 664 /var/log/wtmp);
  2. 系统从未重启过(新安装的系统);
  3. 日志轮转导致旧记录被清理:检查/var/log/wtmp.*备份文件(如last reboot -f /var/log/wtmp.1);
  4. 使用了非标准日志路径:若/var/log/wtmp被移动到其他位置,需通过-f参数指定正确路径。

问题2:如何查看特定时间段内的重启记录?
解答:不同方法支持不同的时间过滤方式:

  1. last reboot:结合grep和awk处理时间,例如last reboot | grep "Oct 15" | head -5查看10月15日的重启记录;
  2. journalctl:使用--since和--until参数(支持ISO 8601格式),如journalctl -u systemd-reboot --since "2023-10-01 00:00:00" --until "2023-10-31 23:59:59";
  3. dmesg:通过-T显示时间戳后用grep过滤,如dmesg -T | grep "2023-10-15" | grep reboot;
  4. grep syslog:用grep结合日期,如grep "Oct 15" /var/log/syslog | grep reboot,注意时间格式需与日志中的格式一致(如last支持英文月份缩写,journalctl支持YYYY-MM-DD HH:MM:SS)。

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

赞 (0)
酷番叔酷番叔
上一篇 2025年9月9日 13:39
下一篇 2025年9月9日 13:53

相关推荐

  • Linux系统如何安装与配置输入法?

    在Linux系统中,设置输入法是日常使用中文或其他非拉丁语言的关键操作,Linux输入法的实现依赖于“输入法框架”(Input Method Framework),常见的框架有IBus、Fcitx(4和5版)等,不同框架的配置方式略有差异,但整体流程相似,本文将以主流发行版(如Ubuntu、Fedora、Arc……

    2025年9月23日
    46300
  • Linux如何创建文档?命令行与图形界面详解

    命令行创建(高效快捷)touch 命令(创建空文件)touch filename.txt # 创建空白文档touch doc1.txt doc2.md # 一次性创建多个文档适用场景:快速创建占位文件或日志文件,echo 或 printf(创建含内容的文档)echo "Hello World&quot……

    2025年8月1日
    33800
  • 如何快速提升网站流量?

    为什么需要改变终端颜色?Linux终端默认的黑白配色可能造成视觉疲劳,个性化颜色方案可提升:工作效率:高对比度配色增强命令可读性个性化体验:匹配桌面主题或个人审美护眼需求:暗色模式减少蓝光刺激以下是5种主流方法,涵盖不同技术需求:方法1:通过环境变量修改(临时生效)适用场景:快速测试颜色效果# 背景色+文字色组……

    2025年7月21日
    24100
  • Linux如何轻松配置WebDAV服务?

    WebDAV(Web Distributed Authoring and Versioning)是一种基于HTTP协议的扩展技术,允许用户像管理本地文件一样远程编辑和管理服务器文件,它广泛应用于团队协作、远程文件同步和跨平台数据共享场景,本指南将详细讲解在Linux(以Ubuntu/Debian为例)中通过Ap……

    2025年7月26日
    27400
  • 如何查看Linux当前用户?

    在Linux系统中,准确识别当前用户是系统管理、权限控制和脚本编写的基础操作,无论是通过终端直接操作,还是编写自动化脚本,都需要明确当前以哪个用户身份运行,本文将详细介绍多种查看当前用户的方法,涵盖基础命令、进阶技巧及实际应用场景,帮助用户在不同场景下灵活选择合适的操作方式,基础命令:直接查看当前用户whoam……

    2025年9月27日
    28800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信