![如何允许用户使用 journalctl 查看特定于用户的 systemd 服务日志?](https://linux22.com/image/690941/%E5%A6%82%E4%BD%95%E5%85%81%E8%AE%B8%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%20journalctl%20%E6%9F%A5%E7%9C%8B%E7%89%B9%E5%AE%9A%E4%BA%8E%E7%94%A8%E6%88%B7%E7%9A%84%20systemd%20%E6%9C%8D%E5%8A%A1%E6%97%A5%E5%BF%97%EF%BC%9F.png)
我在 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.conf
persistent
auto
volatile
更多信息: https://www.freedesktop.org/software/systemd/man/journald.conf.html https://lists.freedesktop.org/archives/systemd-devel/2016-October/037554.html
答案2
我无法让它与--user
和其他类似选项一起工作。但是,当我单独使用它时,我可以看到数据journalctl
。不过,它包括所有日志。我可以搜索我感兴趣的特定应用程序并查看该输出。要找到最新的,我首先转到文件末尾,然后向后搜索:
点击G以转到末尾(大写
G
)点击?并输入您的应用程序名称
它不太实用,但在我工作的设备(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