Как разрешить пользователю использовать journalctl для просмотра пользовательских журналов системных служб?
Я работаю на уровне пользователя в 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 для конкретного юнита пользователя?
3 ответа
В старых версиях 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
Я не смог заставить его работать с
--user
и другие подобные варианты. Однако я могу видеть данные, когда использую
journalctl
самостоятельно. Тем не менее, он включает в себя все журналы. Я могу найти конкретное приложение, которое меня интересует, и посмотреть результат. Чтобы найти последнюю версию, я сначала перехожу в конец файла, а затем ищу в обратном направлении:
Хит, G чтобы дойти до конца (это столица
G
)Нажмите ? и введите название своего приложения
Это не так практично, но на устройстве, на котором я работаю (Jetson), это был практически единственный способ заставить его работать.
вы можете создать скрипт bash, который будет работатьsudo journalctl
с определенным параметром защитите этот сценарий от записи, дайте конкретное разрешение на запуск этого сценария как sudo без пароля. добавить запись в/etc/sudoers
как например
ALL ALL = NOPASSWD: /etc/show_journal.sh
вместо ВСЕ вы можете написать конкретного пользователя Linux