Como usar o comando dmesg no Linux

Conteúdo

Um indicador de terminal estilizado em um laptop Linux.

a dmesg O comando permite que você olhe dentro do mundo oculto dos processos de inicialização do Linux. Revise e monitore mensagens de driver e dispositivo de hardware do buffer de anel do kernel com “o amigo do localizador de falhas”.

Como funciona o buffer de anel do Linux

Em computadores Linux e semelhantes a Unix, inicialização e inicialização são duas fases distintas na sequência de eventos que ocorrem quando o computador é ligado.

a processos de inicialização (BIOS o UEFA, MBR, e REFEIÇÃO) carrega a inicialização do sistema até o ponto onde o kernel carrega na memória e se conecta ao ramdisk inicial (initrd o initramfs), e sistema Começou.

a processos de inicialização em seguida, pegue a testemunha e conclua a inicialização do sistema operacional. Nos primeiros estágios de inicialização, demônios de log gostam syslogd o rsyslogd ainda não em operação. Para evitar a perda de mensagens de erro perceptíveis e avisos desta fase de inicialização, o kernel contém um buffer de anel que você usa como um armazenamento de mensagens.

Um buffer de anel é um espaço de memória reservado para mensagens. É simples em design e tamanho fixo. Quando estiver cheio, mensagens mais recentes substituem mensagens mais antigas. Conceitualmente, pode ser considerado como um “buffer circular. “

O buffer de anel do kernel armazena informações como mensagens de inicialização do driver de dispositivo, mensagens de hardware e mensagens de módulo do kernel. Porque contém essas mensagens de inicialização de baixo nível, o buffer de anel é um bom lugar para começar uma investigação de erros de hardware ou outros problemas de inicialização.

Mas não vá de mãos vazias. Carregar dmesg com você.

O comando dmesg

a dmesg o comando permite que você para revisar as mensagens que são armazenadas no buffer de anel. Por padrão, deve usar sudo usar dmesg.

sudo dmesg

Todas as mensagens do buffer de anel são exibidas na janela do terminal.

Aquilo foi um dilúvio. Obviamente, o que temos que fazer é canalizá-lo less:

sudo dmesg | menos

Agora podemos percorrer as mensagens em busca de itens de interesse.

Você pode usar a função de pesquisa dentro less para localizar e destacar itens e termos de seu interesse. Inicie a função de pesquisa pressionando a tecla de barra “/” sobre less.

RELACIONADO: Como usar o comando less no Linux

Eliminando a necessidade de sudo

Se você quiser evitar ter que usar sudo toda vez que você usa dmesg, você pode usar este comando. Mas tenha em mente: permite que qualquer pessoa com uma conta de usuário use seu computador dmesg sem ter que usar sudo.

sudo sysctl -w kernel.dmesg_restrict = 0

Forçar saída de cores

Por padrão, dmesg provavelmente será configurado para produzir saída de cores. Sim, não é assim, você pode dizer isso dmesg para colorir sua saída usando o -L opção (cor).

sudo dmesg -L

Forçar dmesg sempre usar uma tela colorida por padrão, use este comando:

sudo dmesg --color = always

Timestamps humanos

Por padrão, dmesg use uma notação de carimbo de data / hora de segundos e nanosegundos desde que o kernel começou. Para que seja renderizado em um formato mais amigável para humanos, usar el -H opção (humano).

sudo dmesg -H

Isso faz duas coisas acontecerem.

  • A saída é exibida automaticamente em less.
  • Timestamps mostram um timestamp com a data e hora, com uma resolução de minutos. As mensagens que ocorreram em cada minuto são marcadas com os segundos e nanossegundos desde o início desse minuto.

Timestamps legíveis por humanos

Se você não precisa de precisão de nanossegundos, mas você quer carimbos de data / hora mais fáceis de ler do que o padrão, use o -T opção (legível por humanos). (É um pouco confuso. -H é a opção “humano”, -T é a opção “legível por humanos”).

sudo dmesg -T

Os carimbos de data / hora são representados como datas e horas padrão, mas a resolução é reduzida para um minuto.

Tudo o que aconteceu em um único minuto tem o mesmo carimbo de data / hora. Se você só se preocupa com a sequência de eventos, isto é suficiente. O que mais, observe que eles o retornam ao prompt de comando. Esta opção não invoca automaticamente less.

Ver eventos ao vivo

Para ver as mensagens à medida que atingem o buffer de anel do kernel, use o --follow (espere por mensagens) opção. Essa frase pode parecer um pouco estranha. Se o buffer de anel é usado para armazenar mensagens para eventos que ocorrem durante a sequência de inicialização, Como as mensagens ao vivo podem chegar ao buffer de anel depois que o computador está instalado e funcionando?

Qualquer coisa que cause uma mudança no hardware conectado ao seu computador fará com que mensagens sejam enviadas para o buffer de anel do kernel. Atualize ou adicione um módulo de kernel e você verá mensagens de buffer de anel sobre essas mudanças. Se você conectar uma unidade USB ou conectar ou desconectar um dispositivo Bluetooth, você verá mensagens no dmesg Produção. Mesmo o hardware virtual fará com que novas mensagens apareçam no buffer de anel. Ligue uma máquina virtual e você verá novas informações chegarem no buffer de anel.

sudo dmesg --seguir

Observe que você não retornará ao prompt de comando. Quando novas mensagens aparecem, são mostrados por dmesg na parte inferior da janela do terminal.

Saída de sudo dmesg --follow na janela do terminal

Até mesmo montar um CD-ROM é considerado uma mudança, porque você inseriu o conteúdo do disco de CD-ROM na árvore de diretórios.

Mensagens de buffer de anel Dmesg como resultado da montagem de um disco de CD-ROM

Para sair do feed em tempo real, pressione Ctrl+C.

Recupere as últimas dez mensagens

Use o comando tail para recuperar os últimos dez mensagens de buffer de anel do kernel. Claro, pode recuperar qualquer número de mensagens. Dez é apenas nosso exemplo.

sudo dmesg | último -10

As últimas dez mensagens são recuperadas e listadas na janela do terminal.

Pesquise por termos específicos

Canalize a saída de dmesg Através dos grep para procurar strings ou padrões específicos. Aqui estamos usando o -i (ignorar maiúsculas e minúsculas) de modo que o caso de strings correspondentes seja ignorado. nossos resultados incluirão “USB” e “USB” e qualquer outra combinação de letras minúsculas e maiúsculas.

sudo dmesg | grep -i usb

Os resultados da pesquisa destacados estão em maiúsculas e minúsculas.

Podemos isolar as mensagens que contêm referências ao primeiro SCSI disco rígido no sistema sda. (Mesmo, sda também é usado hoje para o primeiro disco rígido SATAe para drives USB).

sudo dmesg | grep -i sda

Todas as mensagens que eles mencionam sda são recuperados e listados na janela do terminal.

Para fazer grep pesquisar vários termos de uma vez, Use o -E (estender a expressão regular) opção. Você deve fornecer os termos de pesquisa dentro de uma string entre aspas e uma barra vertical “|” delimitadores entre termos de pesquisa:

sudo dmesg | grep -E "memória|tty|dma"

Qualquer mensagem que mencione qualquer um dos termos de pesquisa é exibida na janela do terminal.

Use níveis de registro

Cada mensagem gravada no buffer de anel do kernel tem um nível anexado. O nível representa a importância das informações na mensagem. Os níveis são:

  • emergir: O sistema não pode ser usado.
  • alerta: A ação deve ser tomada imediatamente.
  • crítico: Condições críticas.
  • errar: Condições de erro.
  • avisar: Condições de alerta.
  • perceber: Condição normal, mas significativa.
  • informação: Informativo.
  • depurar: Mensagens de nível de depuração.

Podemos fazer dmesg extrair mensagens que correspondem a um determinado nível usando o -l (nível) e passando o nome do nível como parâmetro de linha de comando. Para visualizar apenas mensagens de nível “informativo”, use este comando:

sudo dmesg -l info

Todas as mensagens listadas são mensagens informativas. Eles não contêm erros ou avisos, apenas notificações úteis.

Combine dois ou mais níveis de log em um comando para recuperar mensagens de vários níveis de log:

sudo dmesg -l debug,perceber

A saída de dmesg é uma combinação de mensagens de cada nível de registro:

As categorias de instalações

a dmesg As mensagens são agrupadas em categorias chamadas “instalações”. A lista de instalações é:

  • kern: Mensagens de kernel.
  • Nome do usuário: Mensagens no nível do usuário.
  • correspondência: Sistema de correio.
  • diabo: Demônios do sistema.
  • auth: Mensagens de segurança / autorização.
  • syslog: Mensagens syslogd internas.
  • lpr: Subsistema de impressora de linha.
  • Notícias: Subsistema de notícias da rede.

Nós podemos pergutar dmesg para filtrar sua saída para mostrar apenas mensagens em uma instalação específica. Para faze-lo, devemos usar o -f (instalação) opção:

sudo dmesg -f daemon

dmesg lista todas as mensagens relacionadas aos daemons na janela do terminal.

Como nos saímos com os níveis, Nós podemos pergutar dmesg para listar mensagens de mais de uma instalação por vez:

sudo dmesg -f syslog, demônio

O resultado é uma combinação de mensagens de log do syslog e daemon.

Combinando instalação e nível

a -x (decodificar) opção faz dmesg mostrar facilidade e nível como prefixos legíveis por humanos para cada linha.

sudo dmesg -x

A instalação e o nível podem ser vistos no início de cada linha:

A primeira seção destacada é uma mensagem de função “núcleo” com um nível de “perceber”. A segunda seção destacada é uma mensagem de função “núcleo” com um nível de “em formação”.

Isso é genial, mas porque?

Em poucas palavras, detecção de avarias.

Se você tiver problemas com uma peça de hardware que não é reconhecida ou não se comporta corretamente, dmesg pode lançar alguma luz sobre o assunto.

  • Usar dmesg para revisar as mensagens do mais alto nível através de cada nível inferior, procurando por erros ou avisos que mencionem o item de hardware ou que possam estar relacionados ao problema.
  • Usar dmesg para procurar qualquer menção do apropriado instalações para ver se eles contêm informações úteis.
  • Tubo dmesg Através dos grep e relacionados à pesquisa strings ou identificadores como o fabricante do produto ou números do modelo.
  • Tubo dmesg Através dos grep e pesquisar termos genéricos O que “GPU” o “armazenar”, ou termos como “erro”, “fracassado” o “incapaz”.
  • Use o --follow opção e relógio dmesg mensagens em tempo real.

Caçada feliz.

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ê.