Journalctl 查看 systemd 日志出现 No entries 报错怎么办

文章导读
journalctl 显示 No entries 通常是因为 systemd-journald 服务未运行或日志存储模式为易失性。优先检查服务状态并配置持久化存储目录,避免重启后日志丢失。
📋 目录
  1. Ⅰ 命令速用版
  2. Ⅱ 为什么会这样
  3. Ⅲ 分步处理
  4. Ⅳ 怎么验证是否生效
  5. Ⅴ 常见坑
  6. Ⅵ 常见问题
  7. Ⅶ 参考来源
A A

journalctl 显示 No entries 通常是因为 systemd-journald 服务未运行或日志存储模式为易失性。优先检查服务状态并配置持久化存储目录,避免重启后日志丢失。

先说结论:多数情况是 journald 服务异常或未开启持久化存储,需先确认服务状态再创建存储目录。

  • 先确认:systemd-journald 服务是否 active
  • 先处理:创建 /var/log/journal 目录并重启服务
  • 再验证:执行 journalctl -n 5 查看是否有新日志

命令速用版

systemctl status systemd-journald
mkdir -p /var/log/journal
systemd-tmpfiles `--create` `--prefix` /var/log/journal
systemctl restart systemd-journald
journalctl -n 5

为什么会这样

根本原因是 systemd-journald 默认可能仅使用易失性存储,重启后日志清空或目录权限不正确导致无法写入。systemd 文档说明 journald 默认存储在 /run/log/journal,该目录位于 tmpfs 上,重启即消失。

若未创建 /var/log/journal 目录,journald 不会持久化日志。此外,服务停止、时间过滤器错误或使用容器环境也会导致查询不到条目。

分步处理

步骤 1:检查服务状态

执行 systemctl status systemd-journald 确认服务处于 active (running) 状态。若显示 inactive 或 failed,执行 systemctl start systemd-journald 启动服务。

Journalctl 查看 systemd 日志出现 No entries 报错怎么办

步骤 2:检查存储目录

查看 /var/log/journal 是否存在。若不存在,执行 mkdir -p /var/log/journal 创建目录。该目录存在是开启持久化存储的关键标志。

步骤 3:修正权限

执行 systemd-tmpfiles `--create` `--prefix` /var/log/journal 确保目录权限和属组符合 systemd 要求。通常属组应为 systemd-journal,权限为 2755。

步骤 4:重启服务

Journalctl 查看 systemd 日志出现 No entries 报错怎么办

执行 systemctl restart systemd-journald 使配置生效。若身处容器环境,此步骤可能无效,需确认容器是否共享宿主 journald。

怎么验证是否生效

执行 journalctl -n 5 查看最近 5 条日志。若输出具体内容而非 No entries,说明修复成功。重启服务器后再次执行该命令,若仍有日志记录,说明持久化存储已生效。

常见坑

时间过滤器误导:使用 `--since` 或 `--until` 参数时,若时间范围无日志会报 No entries。排查时先不加时间参数。

权限不足:普通用户可能无权查看系统日志。尝试加 sudo 或将用户加入 systemd-journal 组。

Journalctl 查看 systemd 日志出现 No entries 报错怎么办

容器环境:Docker 或 Kubernetes 容器内通常不使用宿主 systemd-journald。容器内查询无日志属正常现象,应查容器标准输出。

日志轮转:若磁盘空间不足,journald 可能自动删除旧日志。检查 SystemMaxUse 配置项。

常见问题

为什么加了 sudo 还是 No entries

可能是服务未运行或存储目录未创建。sudo 仅解决权限问题,不解决服务状态和存储配置问题。

重启后日志一定会丢失吗

若未创建 /var/log/journal 目录,重启后日志会丢失。创建该目录并设置正确权限后可持久化保存。

如何查看特定服务的日志

使用 journalctl -u 服务名 命令。若仍无 entries,确认该服务是否正在运行且配置了日志输出。

参考来源

  • freedesktop.org, systemd-journald.service 手册页, https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html
  • freedesktop.org, journalctl 手册页, https://www.freedesktop.org/software/systemd/man/journalctl.html