Рассмотрим следующие 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.