在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的日志管理工具,可查看内核、服务及系统事件的详细日志,包括重启过程中的关键信息。  

基本用法
查看所有与重启相关的系统日志:
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)的信息,重启时内核的启动参数、硬件检测、错误信息等会被记录,适合排查内核层面的重启原因。  

基本用法
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 panic或Oops,则可能是内核错误导致重启;若显示systemd相关日志,则与系统服务相关。
常用命令对比及适用场景
为方便选择工具,以下通过表格对比不同方法的优缺点及适用场景:
| 命令/文件 | 作用 | 优点 | 缺点 | 适用场景 | 
|---|---|---|---|---|
last reboot | 
查看重启时间及用户记录 | 简单直观,无需额外参数 | 依赖wtmp文件,信息有限 | 
快速查看最近重启时间及次数 | 
journalctl | 
查看系统重启详细日志 | 信息全面,支持过滤,适合systemd | 仅限systemd系统,命令参数较多 | 定位重启原因(服务/内核错误) | 
/var/log/messages | 
查看系统日志中的重启事件 | 可追溯历史日志(结合轮转文件) | 需手动过滤关键字,日志量大时效率低 | 传统系统或需长期分析重启记录 | 
dmesg | 
查看内核重启信息 | 直观显示内核错误及硬件信息 | 仅限内核层面,无用户操作记录 | 排查内核panic或驱动问题导致的重启 | 
注意事项
- 权限问题:查看
/var/log/下的系统日志通常需要root权限,普通用户需通过sudo执行命令。 - 日志清理:系统会定期清理旧日志(如
logrotate工具),若需长期保存,需配置日志轮转策略。 - 发行版差异:不同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")。journalctl:journalctl --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