以特定用户身份运行时使用 systemd 记录标准输出

以特定用户身份运行时使用 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.

请注意,日志中现在缺少回显消息。这是为什么?我该如何显示它?

我在 Ubuntu 16.04 上使用 systemd 229。

答案1

journald目前无法在进程退出前不久对其输出进行归因,对于像 这样的非常短暂的进程尤其如此echo。这是由于 如何从进程 中journald获取某些信息(例如_SYSTEMD_UNIT和字段) ,而这些信息在处理输出时可能不再存在。_COMM/proc

您可以找到错误报告在 GitHub 上在 Bugzilla 上

相关内容