Как разрешить пользователю использовать 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самостоятельно. Тем не менее, он включает в себя все журналы. Я могу найти конкретное приложение, которое меня интересует, и посмотреть результат. Чтобы найти последнюю версию, я сначала перехожу в конец файла, а затем ищу в обратном направлении:

  1. Хит, G чтобы дойти до конца (это столица G)

  2. Нажмите ? и введите название своего приложения

Это не так практично, но на устройстве, на котором я работаю (Jetson), это был практически единственный способ заставить его работать.

вы можете создать скрипт bash, который будет работатьsudo journalctlс определенным параметром защитите этот сценарий от записи, дайте конкретное разрешение на запуск этого сценария как sudo без пароля. добавить запись в/etc/sudoersкак например

ALL ALL = NOPASSWD: /etc/show_journal.sh

вместо ВСЕ вы можете написать конкретного пользователя Linux

Другие вопросы по тегам