bug Systemd? Stdout não marcado como pertencente à unidade quando usuário não raiz = especificado

0

(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!

    
por Jeff Turner 21.01.2017 / 06:28

1 resposta

1

Isso parece um problema conhecido que atualmente não há planos para corrigir. Veja:

por 23.01.2017 / 21:42

Tags