Journald检索systemd日志

在Linux系统中,journald是一个用于记录系统事件的日志系统。journald将事件记录到日志文件中,并允许用户查询和搜索这些日志。

在排查Linux系统问题时,比如系统重启记录和原因,一般都是查看 /var/log/messages/var/log/dmesg 文件来获取系统重启的记录。这些日志文件记录了系统事件,包括启动和重启。

查看最近重启记录:‌

1
sudo grep reboot /var/log/messages | tail

或者

1
sudo dmesg | grep reboot | tail

如果只是想显示重启记录或重启事件,可以使用last命令:

1
last reboot

或者查看wtmp文件

1
last -f /var/log/wtmp reboot

查询最近启动时间

1
sudo last -x | grep "system boot" | tail -1

或者

1
who -b

但是如果你在使用AWS EC2实例 (Amazon Linux 2023),那么 /var/log/messages 文件可能就不存在,

这是因为 Amazon Linux 2023 更依赖 systemd-journald 默认使用 journald 作为主要日志系统。

因此,你需要使用journalctl命令来查看完整的日志。

  1. 主要日志查看方式
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 查看系统日志(推荐)
sudo journalctl

# 查看启动日志
sudo journalctl -b

# 查看今天日志
sudo journalctl --since today

# 查看指定时间范围的日志
sudo journalctl --since "2025-10-06 23:00:00" --until "2025-10-06 23:45:00"

如果知道具体事件发生的时间,建议使用 --since 选项来查看。

  1. 配置 journald 持久化存储

journald 默认情况下不支持持久化存储,也就是说,当系统重启时,journald 将会清空所有日志。

1
2
3
4
5
6
7
8
# 编辑 journald 配置
sudo vi /etc/systemd/journald.conf

# 取消注释并设置:
Storage=persistent

# 重启 journald
sudo systemctl restart systemd-journald

持久化后,journal 日志会存储在:

1
/var/log/journal/<UUID> # 持久化日志目录
  1. 使用 journalctl 查看重启相关信息
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 查看上次启动的完整日志
sudo journalctl -b -1  # 如果还能访问上次启动的日志

# 查看系统启动时间线
sudo journalctl --list-boots

# 查看内核消息
sudo journalctl -k

# 查看系统崩溃相关信息
sudo journalctl | grep -i "reboot\|shutdown\|panic\|oom\|killed"