Como usar o journalctl para ler os registros do sistema Linux

Conteúdo

Uma janela de terminal na área de trabalho gráfica de um laptop Linux.

O registro do sistema Linux mudou com a introdução de systemd. Aprenda a usar o journalctl comando para ler e filtrar mensagens de log do sistema.

Cadastro centralizado

Não é estranho à controvérsia, a systemd O administrador de sistemas e serviços introduziu uma mudança significativa na forma como os logs do sistema são coletados. Os logs costumavam estar localizados em locais diferentes no sistema de arquivos de acordo com o serviço ou daemon que os estava criando. Mas todos eles tinham algo em comum. Eles eram arquivos de texto simples.

Com systemd Todos os arquivos de log do sistema, inicialização e kernel são coletados e gerenciados por meio de uma solução de registro central e dedicada. O formato em que são armazenados é binário. Uma coisa que isso facilita é poder extrair os dados em diferentes formatos, O que JSON, como veremos.

Ele também pode facilitar a referência cruzada de informações relacionadas que foram registradas anteriormente em arquivos de log separados.. Porque os dados agora são mantidos em um único diário, dados de várias fontes de interesse podem ser escolhidos e exibidos em uma única lista entrelaçada de entradas.

journalctl é a ferramenta Eu trabalhava com a revista.

sem frescura jornalctl

Você pode invocar journalctl sem parâmetros de linha de comando:

journalctl

journalctl mostre o diário completo, com as entradas mais antigas no topo da lista. A lista é exibida em less, permitindo que você navegue e pesquise usando as funções de navegação usuais de less. Você também pode usar o Left Arrow e Right Arrow teclas de rolagem lateral para ler entradas de registro amplas.

Pressionando o End irá saltar directamente para o fim da lista e as entradas de registo mais recentes.

pressione Ctrl+C saia.

RELACIONADO: Como usar o comando less no Linux

Embora journalctl pode ser chamado sem usar sudo, você terá certeza de ver todos os detalhes dentro do registro se você usar sudo.

sudo journalctl

Se você precisar, pode fazer journalctl envie sua saída para a janela do terminal em vez de para less, usando o --no-pager opção.

sudo journalctl --no-pager

A saída rola rapidamente pela janela do terminal e retorna ao prompt de comando.

Para limitar o número de linhas que journalctl retorna, usar el -n Opção (linhas). Vamos pedir dez linhas de partida:

sudo journalctl -n 10

Seguindo as atualizações da revista

Para fazer journalctl mostra as entradas mais recentes à medida que chegam ao diário, Use o -f (Prosseguir) opção.

sudo journalctl -f

A entrada mais recente tem um carimbo de data / hora de 07:09:07. À medida que uma nova atividade ocorre, novas entradas são adicionadas na parte inferior da tela. Atualizações quase em tempo real: genial!

No 07:09:59 um aplicativo chamado geek-app injetou uma entrada de registro no diário que dizia: “Nova mensagem do HTG”.

Alterando o formato de exibição

Porque o diário é um arquivo binário, os dados que ele contém devem ser traduzidos ou analisados ​​em texto antes que possam ser mostrados a você. Com diferentes analisadores, diferentes formatos de saída podem ser criados a partir dos mesmos dados de origem binária. Existem vários formatos diferentes que journalctl Eu posso usar.

A saída padrão é o formato curto, que é muito semelhante ao formato de registro do sistema clássico. Para solicitar explicitamente o formulário curto, Use o -o (Saída) opção com o short modificador.

sudo journalctl -n 10 -o curto-cheio

De esquerda a direita, os campos são:

  • A hora em que a mensagem foi criada, na hora local.
  • O nome do host.
  • O nome do procedimento. Este é o procedimento que gerou a mensagem.
  • A mensagem de log.

Para obter um carimbo de data e hora completo, Use o short-full modificador:

sudo journalctl -n 10 -o curto-cheio

Os formatos de data e hora neste resultado são o formato em que você deve fornecer datas e horas quando selecionar as mensagens de registro por período, como veremos em breve.

Para ver todos os metadados que acompanham cada mensagem de log, Use o verbose modificador.

sudo journalctl -n 10 -o prolixo

existem muitos campos possíveis, mas é raro que todos os campos estejam presentes em uma mensagem.

Um campo que é importante destacar para discutir é o Priority interior. Neste exemplo, tem um valor de 6. O valor representa a relevância da mensagem:

  • 0: Emergência. O sistema não pode ser usado.
  • 1: Alerta. Foi sinalizada uma condição que deve ser corrigida imediatamente.
  • 2: Crítico. Isso cobre bloqueios, despejos de memória e grandes falhas em aplicativos primários.
  • 3: Erro. Um erro foi relatado, mas não é considerado sério.
  • 4: Aviso. Indica uma condição que, se ignorado, pode se tornar um erro.
  • 5: Perceber. Usado para relatar eventos que são incomuns, mas sem erros.
  • 6: Em formação. Mensagens operacionais regulares. Eles não requerem nenhuma ação.
  • 7: Depurar. As mensagens são colocadas em aplicativos para facilitar a depuração.

Se você deseja que a saída seja formada corretamente Notação de objeto JavaScript (JSON), usar el json modificador:

sudo journalctl -n 10 -o json

Cada mensagem é devidamente empacotada como um objeto JSON bem formado e uma mensagem é exibida por linha de saída.

Para ter a saída JSON bem impresso, use o json-pretty modificador.

sudo journalctl -n 10 -o json-linda

Cada objeto JSON é dividido em várias linhas, com cada par nome-valor em uma nova linha.

Para ver apenas as mensagens de entrada de registro, sem timestamps ou outros metadados, Use o cat modificador:

sudo journalctl -n 10 -um gato

Este formato de exibição pode dificultar a identificação de qual procedimento gerou o evento de registro, mesmo que algumas mensagens contenham uma pista.

Seleção de mensagens de log por período de tempo

Para limitar a produção de journalctl para um período de tempo que lhe interessa, Use o -S (a partir de) e -U (até) opções.

Para ver as entradas de registro de uma determinada data e hora, use este comando:

sudo journalctl -S "2020-91-12 07:00:00"

A tela contém apenas mensagens que chegaram após a data e hora no comando.

Para definir um período de tempo sobre o qual deseja relatar, use tanto o -S (a partir de) e -U (até) opções juntas. Este comando analisa as mensagens de log de um período de tempo de 15 minutos:

sudo journalctl -S "2020-91-12 07:00:00" -você "2020-91-12 07:15:00"

Esta é uma ótima combinação para usar se você souber que algo estranho aconteceu no seu sistema e mais ou menos quando aconteceu.

Usando períodos de tempo relativos

Você pode usar endereços relativos ao selecionar seus períodos de tempo. Nova mensagem do HTG “Nova mensagem do HTG”. Isso é exatamente o que este comando significa. o “d” Isso significa “dia” e ele “-1” Nova mensagem do HTG.

sudo journalctl -S -1d

As mensagens de log são listadas a partir do 00:00:00 Nova mensagem do HTG “agora”.

Se você quiser investigar algo que aconteceu no passado recente, você pode especificar um período de tempo relativo medido em horas. Aqui estamos revisando as mensagens de log da última hora:

sudo journalctl -S -1h

Mensagens da última hora são exibidas. Nova mensagem do HTG “m” Nova mensagem do HTG “C” Nova mensagem do HTG.

journalctl entende today, yesterday, e tomorrow. Esses modificadores fornecem uma maneira conveniente de especificar períodos de tempo comuns. Para ver todos os eventos que aconteceram ontem, use este comando:

sudo journalctl -S ontem

Todos os eventos de registro de diário que ocorreram ontem, até a meia noite 00:00:00, são recuperados e exibidos.

Para ver todas as mensagens de log recebidas até agora, use este comando:

sudo journalctl -S today

Mostra tudo desde 00:00:00 até o momento em que o comando é emitido.

Você pode misturar os diferentes modificadores de período de tempo. Para ver tudo de dois dias atrás até o início de hoje, use este comando:

sudo journalctl -S -2d -U hoje

Tudo desde anteontem até hoje é recuperado e mostrado.

Escolha mensagens de registro por campos de dados

Você pode pesquisar mensagens de log combinando uma ampla gama de campos de revistas. Essas pesquisas tentam encontrar correspondências nos metadados anexados a cada mensagem. É recomendado que veja a lista de campos e escolha aqueles que são mais úteis para você.

Observe que se um aplicativo preenche todos os campos ou não, depende totalmente dos autores do aplicativo. Não é possível garantir que todos os campos serão preenchidos.

Todos os modificadores de campo do diário são usados ​​da mesma maneira. Usaremos alguns em nossos exemplos abaixo. Para pesquisar mensagens de log para um aplicativo específico, Use o _COMM (comando) modificador. Se você também usa o -f (Prosseguir) opção, journalctl rastreará novas mensagens deste aplicativo assim que chegarem.

sudo journalctl -f _COMM = geek-app

Você pode pesquisar por entradas de registro usando o identificação do processo do procedimento que gerou a mensagem de log. Use o ps comando para encontrar o ID do procedimento do daemon ou aplicativo para pesquisar.

sudo journalctl _PID = 751

Na máquina usada para investigar esta postagem, a SSH O diabo é o procedimento 751.

Você também pode pesquisar por ID do usuário. Este é o ID do usuário da pessoa que iniciou o aplicativo ou comando, ou quem é o dono do procedimento.

sudo journalctl _UID = 1000

Todas as mensagens associadas a qualquer outro ID de usuário são filtradas. Apenas mensagens relacionadas ao usuário são exibidas 1000:

Outra maneira de encontrar mensagens de log relacionadas a um aplicativo específico é fornecer o caminho para o executável.

sudo journalctl / usr / bin / anacron

Toda a anacron as mensagens de registro do programador são recuperadas e exibidas.

Para facilitar a busca, Nós podemos pergutar journalctl para listar todos os valores que contém, para qualquer um dos campos do jornal.

Para visualizar os IDs de usuário que journalctl gravou mensagens de log para, Use o -F (campos) e passar o _UID identificador de campo.

journalctl -F _UID

Vamos fazer isso de novo e olhar para o Id do grupo (GID):

journalctl -F _GID

Você pode fazer isso com qualquer um dos identificadores de campo de diário.

Lista de mensagens do kernel

Existe uma maneira embutida de isolar rapidamente as mensagens do kernel. Não há necessidade de pesquisar e isolá-los você mesmo. a -k Opção (núcleo) remove todas as outras mensagens e oferece uma visão instantânea das entradas de registro do kernel.

sudo journalctl -k

O destaque reflete a relevância da mensagem, de acordo com os valores no Priority interior.

Revisão da mensagem de inicialização

Se você tiver um obstáculo relacionado à inicialização que deseja investigar, journalctl tem tudo sob controle. Talvez você tenha adicionado um novo hardware e ele não esteja respondendo, ou um componente de hardware que funcionava anteriormente não funciona mais após a última atualização do sistema.

Para ver as entradas de registro associadas à sua última inicialização, usar el -b (opção de inicialização:

journalctl -b

As entradas de registro da última inicialização são exibidas.

Nova mensagem do HTG “Nova mensagem do HTG”, queremos dizer o procedimento de inicialização que deu vida ao seu computador para a sua sessão de login atual. Para ver as botas anteriores, você pode usar um número para saber journalctl em que bota você está interessado. Para ver a terceira inicialização anterior, use este comando:

journalctl -b 3

Geralmente, se você se deparou com um obstáculo e teve que reiniciar sua máquina, é uma sequência de inicialização mais antiga que lhe interessa. Portanto, este é um formulário de comando comum.

É fácil se confundir com a sequência de inicialização. Para ajudar, Nós podemos pergutar journalctl para listar as botas que você registrou no seu diário, usando o --list-boots opção.

journalctl --list-boots

Você pode identificar o início para o qual deseja ver as mensagens a partir do carimbo de data e hora, e, em seguida, use o número na coluna da esquerda para obter as mensagens de log para essa sequência de inicialização. Você também pode selecionar o identificador de inicialização de 32 bits e passe para journalctl.

sudo journalctl -b 1f00248226ed4ab9a1abac86e0d540d7

As mensagens de registro para a sequência de inicialização que solicitamos são recuperadas e exibidas.

Gerenciar espaço no disco rígido do diário

Decididamente, o diário e todas as suas mensagens de registro são armazenados em seu disco rígido. Isso significa que eles vão ocupar espaço no disco rígido. Para ver quanto espaço o diário ocupou, Use o --disk-usage opção.

journalctl --disk-usage

Com os discos rígidos de hoje, 152 MB não é muito espaço, mas para fins de demonstração, ainda vamos apará-lo. Existem duas alternativas para fazer isso. A primeira é determinar um limite de tamanho para o qual você deseja que a revista encolha. Vai crescer de volta, decididamente, mas podemos podá-lo agora e estar prontos para esse novo crescimento.

Usaremos o maravilhosamente intitulado --vacuum-size opção e passar o tamanho para o qual gostaríamos que a revista fosse reduzida. Vamos perguntar 100 MB. A maneira de pensar sobre isso é que estamos perguntando journalctl para “Nova mensagem do HTG, mas não saia 100 MB”.

journalctl --vacuum-size = 100M

A outra maneira de reduzir o tamanho do seu diário é usar o --vacuum-time opção. Esta opção diz journalctl para descartar mensagens mais antigas do que o período fornecido na linha de comando. Você pode usar days, weeks, months, e years no período de tempo.

Vamos deletar todas as mensagens com mais de uma semana:

journalctl --vacuum-time = 1weeks

Dados versus informação

Os dados não são úteis, a menos que você possa entrar neles e fazer uso deles. Então, torna-se uma informação útil. a journalctl comando é uma ferramenta flexível e sofisticada que permite inserir os dados de interesse de várias maneiras.

Você pode usar quase qualquer informação que você tem para localizar as mensagens de log que você precisa.

setTimeout(função(){
!função(f,b,e,v,n,t,s)
{E se(f.fbq)Retorna;n = f.fbq = função(){n.callMethod?
n.callMethod.apply(n,argumentos):n.queue.push(argumentos)};
E se(!f._fbq)f._fbq = n;n.push = n;n.loaded =!0;n.version = ’2.0′;
n.queue =[];t = b.createElement(e);t.async =!0;
t.src = v;s = b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s) } (window, documento,'roteiro',
‘Https://connect.facebook.net/en_US/fbevents.js ’);
fbq('iniciar', ‘335401813750447’);
fbq('acompanhar', ‘PageView’);
},3000);

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.