Onde está / por que não há log para serviços normais do sistema do usuário?

19

Estou tentando aprender o uso básico do systemd e me deparei com um problema confuso com as unidades de serviço do usuário.

Ao executar serviços comuns com systemctl start some.service , posso encontrar o log completo desse serviço (incluindo o que foi impresso em stdout / stderr, como eu o entendo) executando sudo journalctl --unidade some.service .

Considere o exemplo servicefile chatty.service :

[Service]
ExecStart=/usr/bin/echo "test from chatty.service"

Quando eu coloco este arquivo de serviço em ~ / .config / systemd / user / chatty.service e executo com systemctl --user start chatty.service eu não posso encontre sua saída enviada para stdout em journalctl, nem com plain journalctl nem com journalctl --user . Eu só recebo a seguinte saída em ambos:

Jan 15 19:16:52 qbd-x230-suse.site systemd[1168]: Starting chatty.service...
Jan 15 19:16:52 qbd-x230-suse.site systemd[1168]: Started chatty.service.

E journalctl --unit chatty.service não retorna nada (com ou sem --user não faz diferença).

Se eu mover o mesmo arquivo de serviço para / etc / systemd / system e executá-lo com sudo systemd start chatty.service , eu recebo a seguinte saída quando execute journalctl sudo --unit chatty.service :

Jan 15 19:28:08 qbd-x230-suse.site systemd[1]: Starting chatty.service...
Jan 15 19:28:08 qbd-x230-suse.site systemd[1]: Started chatty.service.
Jan 15 19:28:08 qbd-x230-suse.site echo[27098]: test from chatty.service

Parece que a unidade de serviço do usuário não está tão bem integrada de alguma forma, isso é esperado, estou faltando alguma coisa ou é um bug?

Estou executando o openSUSE 13.1 x86-64, com systemd 208 (instalação padrão).

    
por Quantumboredom 15.01.2014 / 19:35

3 respostas

17

Use a opção --user-unit e, no seu caso ...

journalctl --user-unit chatty
    
por 27.03.2014 / 09:15
2

Até o systemd v230 , você tinha que usar o sinalizador --user-unit menos intuitivo para visualizar os logs do seu unidade do usuário:

journalctl --user-unit chatty

Desde o systemd v230, agora você pode combinar as sinalizações --user e --unit como esperado:

journalctl --user --unit chatty

A sintaxe --user --unit é suportada desde o Ubuntu 17.10.

    
por 30.07.2018 / 16:37
0

Necroposting, mas enfrentei e resolvi o mesmo problema hoje. Muito provavelmente journalctl --user-unit chatty não funcionou porque você o executa a partir da raiz. No entanto, por man journalctl , --user-unit filtra as entradas de log não apenas por _SYSTEMD_USER_UNIT= , mas também por _UID= e não há chatty service com o uid do root, portanto nenhuma entrada foi encontrada.

É provável que você também tenha tentado executar journalctl --user-unit chatty do seu usuário habitual, mas obteve No journal files were found . Isso acontece porque (e Todos os usuários têm acesso aos seus diários privados por usuário do man journalctl podem ser confusos aqui) em 2018 no meu journalctl do Debian 9 ainda não é persistente por padrão ( Storage=auto em /etc/systemd/journald.conf , e /var/log/journal/ não existe), e no modo não persistente journald não suporta logs de divisão, então todos os logs acabam em um único local em /run/log/journal apesar do fato de que a divisão está ativada por padrão - veja SplitMode em man journald.conf . A ativação da persistência corrige isso.

TL; DR: ative a persistência colocando Storage=persistent em /etc/systemd/journald.conf e recarregando o journald com sudo systemctl restart systemd-journald .

Como alternativa, pesquise com sudo journalctl _SYSTEMD_USER_UNIT=chatty.service

Mais alguns detalhes estão em link

    
por 07.12.2018 / 12:43

Tags