Estou tentando aprender o uso básico do systemd e encontrei um problema confuso com as unidades de serviço do usuário.
Ao executar serviços comuns com o systemctl, inicie o 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 --unit some.service .
Considere o exemplo de arquivo de serviço chatty.service :
[Service]
ExecStart=/usr/bin/echo "test from chatty.service"
Quando coloco esse arquivo de serviço em ~ / .config / systemd / user / chatty.service e o executo com systemctl --user start chatty.service, não consigo encontrar sua saída enviada para stdout no journalctl, nem no journalctl simples nem no journalctl - -user . Eu recebo apenas 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).
Embora se eu mover o mesmo arquivo de serviço para / etc / systemd / system e executá-lo com o sudo systemd start chatty.service , recebo a seguinte saída ao executar o sudo journalctl --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).
journalctl --user --user-unit chatty
para obter essas mensagens de início / parada do systemd, mas não o que o processo de eco gera, pelo menos no meu caso. Você pode receber a mensagem ecoadajournalctl --user
ou usar outro filtro.Respostas:
Use a
--user-unit
opção e, no seu caso ...fonte
journalctl --user
eu entendoNo journal files were found.
Ejournalctl --user-unit chatty
isso não funcionou para mim.Necroposting, mas enfrentei e resolvi o mesmo problema hoje. Provavelmente
journalctl --user-unit chatty
não funcionou para você porque você o executa a partir do root. No entanto, porman 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
serviço com o uid da raiz, portanto, nenhuma entrada é encontrada.É provável que você também tenha tentado executar
journalctl --user-unit chatty
com o usuário habitual, mas conseguiuNo journal files were found
. Isso acontece porque (e todos os usuários têm acesso a seus diários por utilizador privado deman journalctl
pode ser confuso aqui) em 2018 no meu Debian 9 journalctl ainda não é persistente por padrão (Storage=auto
no/etc/systemd/journald.conf
, e/var/log/journal/
não existe), e não modo persistentejournald
não suporta registros de divisão, por isso todos os logs acabam em único lugar em/run/log/journal
apesar do fato de que a divisão é ativado por padrão - vejaSplitMode
noman journald.conf
. A ativação da persistência corrige isso.TL; DR: permitir persistência, colocando
Storage=persistent
para/etc/systemd/journald.conf
e recarregar journald comsudo systemctl restart systemd-journald
.Como alternativa, pesquise com
sudo journalctl _SYSTEMD_USER_UNIT=chatty.service
Mais detalhes estão em https://lists.freedesktop.org/archives/systemd-devel/2016-October/037554.html
fonte
No journal files were opened due to insufficient permissions.
uma "dica" confusa sobre como definir permissões, mas não deveria ter que definir permissões porque estou tentando acessar os logs do usuário, não os logs do sistema. Sua correção funcionou. Muito Obrigado.Até o systemd v230 , era necessário usar o
--user-unit
sinalizador menos intuitivo para exibir os logs da unidade do usuário:Desde systemd v230, agora você pode combinar os sinalizadores
--user
e--unit
conforme o esperado:A
--user --unit
sintaxe é suportada desde o Ubuntu 17.10.fonte