在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