Estou procurando uma maneira de simplesmente imprimir as últimas linhas X de um serviço systemctl no Debian. Gostaria de instalar este código em um script, que usa as entradas de log impressas e mais recentes. Encontrei este post, mas não consegui modificá-lo para meus propósitos.
Atualmente estou usando este código, que está apenas me dando um pequeno trecho dos arquivos de log:
journalctl --unit=my.service --since "1 hour ago" -p err
Para dar um exemplo de como deve ser o 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 de baixo.
Minha ideia é usar egrep ex. egrep -m 700 .
mas não tive sorte desde agora.
Se você quiser ver o último número n de linhas e ver novas mensagens à medida que são impressas no log, tente isto:
Where
-n
indica o número de linhas que você gostaria de ver no final do log e-f
especifica que você gostaria de seguir o log conforme ele muda.Apenas:
Parâmetro
-e
significa:Você pode canalizar a saída para
tail
:O
tail
comando imprime as últimas linhas (10 por padrão) recebidas em stdin para stdout.Editar: conforme observado nos comentários, isso é ineficiente para logs muito grandes.
desde que a solução de comando tail já foi fornecida. Eu tentei usar o comando sed e funcionou bem
O comando abaixo exibirá as últimas 300 linhas