journalctl --unit=my.service -n 100 --no-pager
Estou procurando uma maneira de simplesmente imprimir as últimas linhas X de um serviço systemctl no Debian. Eu gostaria de instalar este código em um script, que usa as entradas de log impressas e mais recentes. Eu encontrei este post, mas eu não foi capaz de modificá-lo para os meus propósitos.
Atualmente estou usando este código, que está 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 o resultado deve parecer, basta digitar o comando acima para qualquer serviço e rolar até o final do log. Em seguida, copie as últimas 300 linhas a partir da parte inferior.
Minha ideia é usar egrep ex. egrep -m 700 .
mas eu não tive sorte desde então.
Basta enviar a saída para tail
:
journalctl --unit=my.service | tail -n 300
O comando tail
imprime as últimas linhas (10 por padrão) recebidas em stdin para stdout.
desde que a solução de comando tail sempre forneceu.Eu tentei usando o sed commmand e funcionou bem
Abaixo, o comando exibirá as últimas 300 linhas
journalctl --unit=my.service | sed -e :a -e '$q;N;301,$D;ba'
Se você quiser ver o último n número de linhas e ver as novas mensagens conforme elas são impressas no log, tente isto:
journalctl -u <service name> -n <number of lines> -f
Onde -n
indica o número de linhas que você gostaria de ver na parte final do log e -f
especifica que você gostaria de seguir o log conforme ele é alterado.
Tags systemd journalctl sysctl