我在 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