Журналирование стандартного вывода с помощью 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.

1 ответ

Решение

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

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

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