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
Lá 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);