问题:
systemd 用户单位journalctl 输出显示“未找到日志文件。”这只发生在我正在测试的一个 sss 用户上,所有本地用户似乎都工作正常。编辑: sss 似乎不是问题。只是这个用户就是问题所在。确切的命令和输出:
$journalctl --user -u myservice
No journal files were found.
系统环境
- RHEL 8.4
- 系统239(239-45.el8_4.3)
- 内核:4.18.0-305.19.1.el8_4.x86_64
故障排除:
我已经阅读了这些帖子并尝试在每个帖子中找到故障排除:
- https://stackoverflow.com/questions/30783134/systemd-user-journals-not-being-created
- https://bbs.archlinux.org/viewtopic.php?id=193518
- 为什么journalctl 说“--没有条目--”?
- journalctl --user 给出“未找到日志文件。”
我已经尝试过以下方法:
- 重新启动。
- 重新部署主机操作系统。
- 尝试创建本地用户进行测试。
- 在继续测试之前,请确保首先直接使用 SSH 或终端登录到我正在使用的所有新创建的本地用户帐户。还测试了我能够使用的 sss 用户帐户的 sshing。
- 重新启动journalctl服务(
systmectl restart systemd-journald.service
) - 确保 /etc/systemd/journald.conf
Storage=persistent
。但也尝试了 auto 和 volatile,没有任何变化。 - 添加
export XDG_RUNTIME_DIR=/run/user/$(id -u)
到本地用户和相关用户的 ~/.bashrc 中。然后获取该文件。 - 确认延迟已启用。
- 注意到这个问题只发生在盒子上的一个特定用户上。创建了新用户,就不会出现这个问题了。
- 相关用户帐户的 uid 与 gid/组不同。不过,我测试了调整新创建的帐户,使其具有与其 gid/groups 不同的 uid,调整了新 uid 的 ~/.bashrc,重新启动,并且该帐户可以显示正确的journalctl 输出。
- 有问题的用户帐户似乎是 sss 用户。
- 确认用户的 d-bus 通道正在运行
ps
,我看到用户正在运行/usr/lib/systemd/systemd --user
- 我能够
systmectl --user
以相关用户身份运行其他命令。我可以检查状态、启动、停止、重新启动用户服务。 - 当我运行时
journalctl --user
,输出如下:$ journalctl --user No journal files were found. -- No entries --
- 当我运行时
journalctl --user --verify
,输出如下:$ journalctl --user --verify No journal files were found.
- 我在另一个也构建了 sss 用户的机器上执行了上述所有操作,问题出在用户帐户上。
- 我发现了journalctl输出!但它在 /var/log/messages 中(rhel 系统中journalctl 输出到syslog 的默认位置)。想知道为什么它显示在那里,但不显示 --user 区域?
- 我检查
systemctl status user.slice --no-pager
并看到每个 uid 的正确用户切片以及正确的服务,systmectl --user status myservice
也显示了正确的切片。但是,如果我检查,ls /var/log/journal/<number>
我看不到user-<UID>@UUID.journal
相关用户的列表。
这个问题似乎只发生在我正在测试的使用 sss 构建的用户身上。我无法删除或重建此用户,因为我不管理此系统上的 sss。
为什么这个特定的 sss 用户journalctl --user
输出没有出现,但本地用户却出现?我在这里缺少什么?不确定如何解决此问题,有什么建议吗?
编辑:好吧,它似乎与 sss 无关。我部署了自己的AD服务器,集成了kerberos和SSSd,建立了一个用户,journalctl对他们来说工作得很好。
此时我不知道为什么该用户的journalctl 不起作用,任何故障排除建议都会有所帮助!
编辑2:我发现 --user 服务的 Journalctl 输出确实显示在其中,/var/log/messages
但这只能由 root 访问。
答案1
我发现问题了!相关用户的 UID/GID < 1000。我将 UID/GID 调整为“1111”,注销并重新登录,journalctl 立即开始工作!
看完之后这个帖子它意识到也许journalctl正在做一些不允许它与它认为用于系统用户的systemd-用户单元一起工作的事情。