如何允许用户使用 journalctl 查看特定于用户的 systemd 服务日志?

如何允许用户使用 journalctl 查看特定于用户的 systemd 服务日志?

我在 Ubuntu 16.04 LTS 中运行用户级服务。例如,我的 test.service 位于~/.config/systemd/user/test.service

我可以通过以下方式运行该服务

systemctl --user start test.target

但是,当我尝试使用读取其日志时journalctl,收到以下错误消息:

journalctl --user -u test.service
Hint: You are currently not seeing messages from other users and the system.
  Users in the 'systemd-journal' group can see all messages. Pass -q to
  turn off this notice.
No journal files were opened due to insufficient permissions.

我如何使用journalctl用户特定单位?

答案1

在较旧的 systemd 版本中,您必须使用journalctl --user --user-unit=SERVICENAME(在较新的版本上journalctl --user -u SERVICENAME也可以正常工作)。

但是,这仅在部分Storage的指令设置为(而不是或)时才有效。编辑配置文件后重新启动,用户将能够看到日志。[Journal]/etc/systemd/journald.confpersistentautovolatile

更多信息: https://www.freedesktop.org/software/systemd/man/journald.conf.html https://lists.freedesktop.org/archives/systemd-devel/2016-October/037554.html

答案2

我无法让它与--user和其他类似选项一起工作。但是,当我单独使用它时,我可以看到数据journalctl。不过,它包括所有日志。我可以搜索我感兴趣的特定应用程序并查看该输出。要找到最新的,我首先转到文件末尾,然后向后搜索:

  1. 点击G以转到末尾(大写G

  2. 点击?并输入您的应用程序名称

它不太实用,但在我工作的设备(Jetson)上,我发现这几乎是让它工作的唯一方法。

答案3

sudo usermod -a -G systemd-journal $USER

或者

sudo usermod -a -G adm $USER

参考:https://wiki.archlinux.org/title/Users_and_groups#User_groups

答案4

我必须这样做:

# mkdir /var/log/journal
# systemd-tmpfiles --create
# journalctl --flush

此后,journalctl --user -u SERVICE 对我有用(RHEL 8.9)

来源:https://github.com/systemd/systemd/issues/16141#issuecomment-642628111

相关内容