Como ler o dmesg da sessão anterior? (dmesg.0)

29

dmesg é um comando para ler o conteúdo /var/log/dmesg. O interessante less /var/log/dmesgé que eu posso usar o sinalizador -T para saída de tempo legível por humanos.

Agora eu gostaria de olhar /var/log/dmesg.0para ver como meu computador travou. O arquivo contém os logs da sessão anterior. Mas eu quero usar o sinalizador -T no comando dmesg. Ou algo equivalente.

Alguma idéia de como?

Eu não me importaria de uma ferramenta gráfica, mas o melhor seria uma solução CLI.

Don Quixote
fonte

Respostas:

29

Para esclarecer um equívoco fundamental, dmesgnão lê /var/log/dmesg. Ele lê diretamente do buffer de anel do kernel e fornece as N mensagens mais recentes. No final do processo de inicialização, dmesgé chamado para gravar as mensagens de inicialização /var/log/dmesg(com versões anteriores desse arquivo sendo rotacionadas da maneira usual).

Depois de ter uma corrida syslog ( syslogd, rsyslogd, syslog-ng, etc.) ele lê a partir do kernel tampão e grava em um arquivo como /var/log/kern.log. (Isto é para o Debian; outros sistemas irão variar). Supondo que seu sistema tenha sido capaz de gravar em disco e liberar os buffers de disco antes de travar, é aí que você encontrará os gritos agonizantes do kernel.

No meu sistema Debian, o /var/log/kern.logarquivo contém registros de data e hora legíveis por humanos.

roaima
fonte
1
Acho que isso responde à minha pergunta, obrigado! Infelizmente ainda não consigo descobrir por que ele trava na suspensão, mas isso é outra história.
precisa saber é o seguinte
Um minha máquina que não sejam as coisas dmesgsão escritas para kern.log, especificamente as seguintes daemons especificamente os seguintes daemonsgnome-keyring-d,goa-daemon,gvfsd,gvfsd-network,gvfs-gphoto2-vo,NetworkManager,upowerd
Att Righ
@AttRigh a única coisa que se deve escrever nesse arquivo é o kernel. Você pode fazer uma nova pergunta
roaima 30/03
@roima Interessante ... Eu realmente não tenho uma pergunta a fazer, pois estou feliz em usar journalctlos logs! Eu apenas pensei que outros possam estar interessados ​​nessa inconsistência. Olhando para o meu sistema i) ele está usando o rsysloglogon kern.logusando a entrada a seguir kern.* -/var/log/kern.log, uma chamada para debsums -econfirmar que nenhum dos meus arquivos de configuração relacionados rsyslogou systemdfoi modificado ( serverfault.com/questions/90400/… ), minha versão do rsyslog é 8.24.0-1, e eu estou usando o debian stretch.
Att Righ
@AttRigh você também pode gostar de ler unix.stackexchange.com/a/294206/100397
roaima 31/03
34

Embora um pouco atrasado para o OP ...

Eu uso o Fedora, mas se o seu sistema usa journalctl, você pode facilmente obter as mensagens do kernel (dmesg log) do desligamento / falha anterior (em um dmesg -Tformato) através do seguinte.

Opções:

  • -k (dmesg)
  • -b < número_da_bota > (Quantas reinicializações atrás 0, -1, -2 etc.)
  • -o curto preciso (dmesg -T)
  • -p prioridade Filtrar por saída prioritária (4 para filtrar avisos e informações).

NOTA: também existe um -o shorte -o short-isoque fornece apenas a data e a data e hora no formato iso, respectivamente.

Comandos:

  • Inicialização atual: journalctl -o short-precise -k
  • Última inicialização: journalctl -o short-precise -k -b -1
  • Duas botas antes: journalctl -o short-precise -k -b -2
  • E assim por diante

Saída de exemplo:

Feb 18 21:41:26.917400 localhost.localdomain kernel: usb 2-4: USB disconnect, device number 12
Feb 18 21:41:26.917678 localhost.localdomain kernel: usb 2-4.1: USB disconnect, device number 13
Feb 18 21:41:27.246264 localhost.localdomain kernel: usb 2-4: new high-speed USB device number 22 using xhci_hcd
Feb 18 21:41:27.419395 localhost.localdomain kernel: usb 2-4: New USB device found, idVendor=05e3, idProduct=0610
Feb 18 21:41:27.419581 localhost.localdomain kernel: usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Feb 18 21:41:27.419739 localhost.localdomain kernel: usb 2-4: Product: USB2.0 Hub
Feb 18 21:41:27.419903 localhost.localdomain kernel: usb 2-4: Manufacturer: GenesysLogic

A quantidade de botas que você pode olhar para trás pode ser visualizada com o seguinte.

  • journalctl --list-boot

A saída de se journalctl --list-bootparece com o seguinte.

 -6 cc4333602fbd4bbabb0df2df9dd1f0d4 Sun 2016-11-13 08:32:58 JST—Thu 2016-11-17 07:53:59 JST
 -5 85dc0d63e6a14b1b9a72424439f2bab4 Fri 2016-11-18 22:46:28 JST—Sat 2016-12-24 02:38:18 JST
 -4 8abb8267e06b4c26a2466562f3422394 Sat 2016-12-24 08:10:28 JST—Sun 2017-02-12 12:31:20 JST
 -3 a040f5e79a754b2a9055ac2598d430e8 Sun 2017-02-12 12:31:36 JST—Sat 2017-02-18 21:31:04 JST
 -2 6c29e3b6f6a14f549f06749f9710e1f2 Sat 2017-02-18 21:31:15 JST—Sat 2017-02-18 22:36:08 JST
 -1 42fd465eacd345f7b595069c7a5a14d0 Sat 2017-02-18 22:51:22 JST—Sat 2017-02-18 23:08:30 JST  
  0 26ea10b064ce4559808509dc7f162f07 Sat 2017-02-18 23:09:25 JST—Sun 2017-02-19 00:57:35 JST
Procyclinsur
fonte
4
Atrasado para o OP. Nunca se atrase para futuros googlers!
Qian
4

No Debian, os dmesglogs são armazenados como:

  • /var/log/dmesg (ao vivo e descompactado)
  • /var/log/dmesg.0 (última sessão e descompactado)
  • /var/log/dmesg.1.gz (penúltimo e comprimido)
  • /var/log/dmesg.2.gz (antepenúltimo e comprimido)
  • /var/log/dmesg.3.gz (3º do último e compactado)
  • /var/log/dmesg.4.gz (4º do último e comprimido)

IIF você tem as licenças, você pode lê-los com cat, moreou lesspara os mais simples e zcat, zmoreou zlesspara aqueles compactados

Diego Alonso
fonte
Este não é o caso no meu debian (testing - stretch, não particularmente modificado, atualizado a partir de hoje). Isso pode estar relacionado systemd, pois o dmesg está registrado no systemd (veja a resposta abaixo).
Att Righ
obrigado pela sua resposta. Agora estou ciente das palavras em inglês penultimateeantepenultimate
transang