Назад | Перейти на главную страницу

Ведение журнала stdout с помощью systemd при запуске от имени конкретного пользователя

Рассмотрим следующие test-echo.service:

[Unit]
Description=Testing journalling of stdout

[Service]
ExecStart=/bin/echo hello world

[Install]
WantedBy=multi-user.target

Его стандартный вывод попадает в журнал, как и ожидалось:

$ sudo systemctl enable test-echo
$ sudo systemctl start test-echo
$ sudo journalctl -e -u test-echo
> ... systemd[1]: Started Testing journalling of stdout.
> ... echo[20178]: hello world
$ sudo systemctl stop test-echo

Теперь добавляю User=ubuntu под [Service] раздел. ubuntu уже есть постоянный пользователь.

$ sudo systemctl daemon-reload
$ sudo systemctl start test-echo
$ sudo journalctl -e -u test-echo
> ... systemd[1]: Started Testing journalling of stdout.

Обратите внимание, что эхо-сообщение теперь отсутствует в журнале. Почему это так и как мне это показать?

Я использую systemd 229 в Ubuntu 16.04.

journald в настоящее время не может атрибутировать выходные данные процессов незадолго до их выхода, что особенно характерно для очень короткоживущих процессов, таких как echo. Это вызвано тем, как journald получает определенную информацию (например, _SYSTEMD_UNIT и _COMM поля) из процесса ' /proc, который может больше не существовать в момент обработки вашего вывода.

Вы можете найти отчет об ошибке на GitHub так же как на Bugzilla.