Como ver as últimas linhas x do log de serviço systemctl

21

Eu estou procurando uma maneira, simplesmente imprimir as últimas linhas X de um serviço systemctl no Debian. Gostaria de instalar esse código em um script, que usa as entradas de log impressas e as mais recentes. Encontrei este post, mas não foi possível modificá-lo para meus propósitos.

Atualmente, estou usando esse código, que está apenas fornecendo um pequeno trecho dos arquivos de log:

journalctl --unit=my.service --since "1 hour ago" -p err

Para dar um exemplo da aparência do resultado, basta digitar o comando acima para qualquer serviço e rolar até o final do log. Em seguida, copie as últimas 300 linhas começando da parte inferior.

Minha idéia é usar o egrep ex. egrep -m 700 .mas não tive sorte desde agora.

user3191334
fonte

Respostas:

48
journalctl --unit=my.service -n 100 --no-pager
sourcejedi
fonte
7

Basta canalizar a saída para tail:

journalctl --unit=my.service | tail -n 300

O tailcomando imprime as últimas linhas (10 por padrão) recebidas em stdin para stdout.

dr01
fonte
11
Esqueci completamente a cauda - ótima idéia, muito obrigado!
User3191334
5
A cauda pode ser dolorosamente lenta para toras grandes. O built-in -ndo journalctrl é o que você deseja. por exemplojournalctl -n 300
Drakes
4

Se você deseja ver o último n número de linhas e ver novas mensagens conforme são impressas no log, tente o seguinte:

journalctl -u <service name> -n <number of lines> -f

Onde -nindica o número de linhas que você deseja ver a partir do final do log e -fespecifica que deseja seguir o log à medida que ele é alterado.

Derek Soike
fonte
4

Somente:

journalctl -u SERVICE_NAME -e

Parâmetro -esignifica:

-e --pagerend; Pule imediatamente para o final do diário na ferramenta de pager implícita. Isso implica em -n 1000 para garantir que o pager não armazene em buffer logs de tamanho ilimitado. Isso pode ser substituído por um -n explícito com algum outro valor numérico, enquanto -nall desativará esse limite.

Daniel Kmak
fonte
1

Desde que a solução de comando da cauda já foi fornecida. Tentei usar o comando sed e funcionou bem

O comando abaixo exibirá as últimas 300 linhas

journalctl --unit=my.service | sed -e :a -e '$q;N;301,$D;ba' 
Praveen Kumar BS
fonte