Isso parece um problema conhecido que atualmente não há planos para corrigir. Veja:
(Editar: pergunta reformulada para evitar confusão inicial com o syslog)
Um pouco de comportamento do sistema bizarro, que eu gostaria de confirmar como um bug, falha na documentação ou PEBCAK.
Considere uma unidade muito simples que é executada como root:
# cat > /etc/systemd/system/testecho.service <<EOF
[Service]
Type=oneshot
ExecStart=/bin/echo 'Hello world'
User=root
EOF
# systemctl daemon-reload
Com User=root
(ou User
não especificado), o stdout vai para o diário marcado como da unidade, como seria de esperar:
# journalctl -u testecho -f &
# systemctl start testecho
Jan 21 19:37:33 atlassian-app01.phx7.llnw.com systemd[1]: Starting testecho.service...
Jan 21 19:37:33 atlassian-app01.phx7.llnw.com echo[13479]: Hello world
Jan 21 19:37:33 atlassian-app01.phx7.llnw.com systemd[1]: Started testecho.service.
No entanto, quando um serviço é executado como qualquer usuário não raiz, por exemplo, nobody
, stdout não é marcado como da unidade e não será exibido se você executar journalctl
com -u
:
# cat > /etc/systemd/system/testecho.service <<EOF
[Service]
Type=oneshot
ExecStart=/bin/echo 'Hello world'
User=nobody
EOF
# systemctl daemon-reload
# journalctl -u testecho -f &
# systemctl start testecho
Jan 21 19:38:56 atlassian-app01.phx7.llnw.com systemd[1]: Starting testecho.service...
Jan 21 19:38:56 atlassian-app01.phx7.llnw.com systemd[1]: Started testecho.service.
Na verdade, o stdout está indo para o diário, mas sem a marca _SYSTEMD_UNIT. Stdout pode ser visto deixando de fora o -u testunit
:
# journalctl -f &
systemctl start testecho
# systemctl start testecho
Jan 21 19:42:04 atlassian-app01.phx7.llnw.com systemd[1]: Starting testecho.service...
Jan 21 19:42:04 atlassian-app01.phx7.llnw.com echo[13719]: Hello world
Jan 21 19:42:04 atlassian-app01.phx7.llnw.com systemd[1]: Started testecho.service.
Isso também pode ser confirmado executando journalctl -o json-pretty -f
. Quando User=
é não-raiz, não há campo "_SYSTEMD_UNIT" : "testecho.service"
.
Os documentos em StandardOutput = não dizem nada sobre variação mágica baseada em User
e nem os documentos para Usuário = . Tudo o que eles dizem é que StandardOutput
herda DefaultStandardOutput
e o padrão é journal
.
Estou faltando alguma coisa? Observo que o stdout do meu serviço sempre vai para o syslog, independentemente de User
Eu vi isso no systemd 229 e 231 rodando no Ubuntu 16.04 e 16.10 respectivamente.
Obrigado!
Isso parece um problema conhecido que atualmente não há planos para corrigir. Veja:
Tags systemd