Estou particularmente interessado nisso por examinar a saída dos serviços oneshot executados em um timer. A --unit
sinalização está próxima, mas concatena todas as execuções do serviço juntas. A maneira mais óbvia em que posso pensar seria filtrar o PID, mas isso me preocupa com a reutilização / serviços do PID que bifurcam, e obter o último PID é bastante inconveniente. Existe algum outro identificador que corresponda a uma única execução de um serviço, que eu poderia usar para filtrar os logs?
Edição: Eu aceitaria felizmente um "não" autoritário se essa for a resposta real.
fonte
journalctl --user -u UNITFILE -f -o json-pretty
pode ser útil; você está procurandoMESSAGE
campos em particular. Descobri que você também pode precisarUSER_INVOCATION_ID
, e também algumas mensagens não têm nenhum ID de chamada anexado a elas, portanto, não podem ser filtradas por esse mecanismo. Não sei por que, talvez meu registro esteja mal configurado ..Não tenho certeza de qual carimbo de data / hora faz mais sentido, mas isso funciona para mim. Espero que exista uma maneira melhor de trabalhar com os registros de data e hora do
systemctl show
que o awk - não consegui descobrir como controlar o formato dos registros de data e hora.fonte
systemctl show -p ActiveEnterTimestamp thermo.service | awk '{print $2 \" \" $3}'
" -fu thermo.service | menossystemctl show -p ActiveEnterTimestamp --value $unit
, para que não seja necessário extra awkVocê pode usar o sinalizador de inicialização para buscar apenas os logs dessa inicialização. por exemplo
fonte
Isso pode ajudá-lo a:
journalctl -u foo.service | cauda -n 2
ou substitua 2 pelo número esperado de linhas
journalctl -u foo.service --since = ' 2016-04-11 13:00:00 '
Você também pode combiná-los para obter primeiro o último registro de data e hora do tempo de execução e depois usá-lo com a opção --since.
fonte
Você pode usar filtros de campo com o Journalctl. Por exemplo
Obtenha uma lista de todos os campos disponíveis usando:
Um campo disponível é
_PID
.Você pode obter o PID de um processo em execução usando
pidof
ousystemctl show --property MainPID <SERVICE_NAME>
Então, aqui está como eu obtenho os logs do processo atual do Kubernetes kubelet:
Agora me diga por que eu é tão difícil instalar o Kubernetes :-(
fonte
journalctl -r | grep -m1 foo.service
fonte