¿Cómo leer dmesg de la sesión anterior? (dmesg.0)

29

dmesg es un comando para leer el contenido /var/log/dmesg. Lo bueno en comparación less /var/log/dmesges que puedo usar el indicador -T para la salida de tiempo legible por humanos.

Ahora me gustaría mirar /var/log/dmesg.0para ver cómo se bloqueó mi computadora. El archivo contiene los registros de la sesión anterior. Pero quiero usar la bandera -T del comando dmesg. O algo equivalente.

¿Alguna idea de cómo?

No me importaría una herramienta gráfica, pero lo mejor sería una solución cli.

Don Quijote
fuente

Respuestas:

29

Para aclarar una idea errónea fundamental, dmesgno lee de /var/log/dmesg. Se lee directamente desde el búfer de anillo del núcleo y le da los N mensajes más recientes. Hacia el final del proceso de arranque, dmesgse invoca para escribir los mensajes de arranque /var/log/dmesg(con versiones anteriores de ese archivo girando de la manera habitual).

Una vez que tenga un rodaje syslog ( syslogd, rsyslogd, syslog-ng, etc.) que lee desde el núcleo de amortiguación y escribe en un archivo como /var/log/kern.log. (Esto es para Debian; otros sistemas variarán). Suponiendo que su sistema haya podido escribir en el disco y vaciar las memorias intermedias del disco antes de que se bloquee, allí es donde encontrará los gritos moribundos del núcleo.

En mi sistema Debian, el /var/log/kern.logarchivo contiene marcas de tiempo legibles por humanos.

roaima
fuente
1
Creo que esto responde a mi pregunta, ¡gracias! Desafortunadamente, todavía no puedo entender por qué se bloquea al suspender, pero esa es otra historia.
donquixote
Una de las cosas de mi máquina que no sean dmesgescritas kern.log, específicamente los siguientes demonios específicamente los siguientes demoniosgnome-keyring-d,goa-daemon,gvfsd,gvfsd-network,gvfs-gphoto2-vo,NetworkManager,upowerd
Att Righ
@AttRigh lo único que se supone que debe escribir en ese archivo es el kernel. Es posible que
desee
@roima Interesante ... ¡Realmente no tengo una pregunta que hacer ya que estoy feliz de usar journalctlpara obtener los registros! Solo pensé que otros podrían estar interesados ​​en esta inconsistencia. Mirando mi sistema i) está usando rsyslogpara iniciar sesión kern.logusando la siguiente entrada kern.* -/var/log/kern.log, una llamada para debsums -econfirmar que ninguno de mis archivos de configuración está relacionado rsyslogo systemdha sido modificado ( serverfault.com/questions/90400/… ), mi versión de rsyslog es 8.24.0-1, y estoy usando debian stretch.
Att Righ
@AttRigh también te gustaría leer unix.stackexchange.com/a/294206/100397
roaima
34

Aunque un poco tarde para el OP ...

Yo uso Fedora, pero si su sistema usa, journalctlentonces puede obtener fácilmente los mensajes del núcleo (registro dmesg) desde el apagado / bloqueo anterior (en un dmesg -Tformato) a través de lo siguiente.

Opciones:

  • -k (dmesg)
  • -b < número_boot > (¿Cuántos reinicios hace 0, -1, -2, etc.)
  • -o corta precisión (dmesg -T)
  • -p prioridad Filtrar por salida prioritaria (4 para filtrar avisos e información).

NOTA: también hay un -o shorty -o short-isoque le da solo la fecha y la fecha y hora en formato iso respectivamente.

Comandos:

  • Arranque actual: journalctl -o short-precise -k
  • Última bota: journalctl -o short-precise -k -b -1
  • Dos botas antes: journalctl -o short-precise -k -b -2
  • Y así

Salida de ejemplo:

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

La cantidad de botas que puede mirar hacia atrás se puede ver con lo siguiente.

  • journalctl --list-boot

La salida de se journalctl --list-bootparece a la siguiente.

 -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
Prociclinsur
fuente
44
Tarde para el OP. ¡Nunca es tarde para futuros googlers!
Qian
4

En Debian, los dmesgregistros se almacenan como:

  • /var/log/dmesg (vivo y sin comprimir)
  • /var/log/dmesg.0 (última sesión y sin comprimir)
  • /var/log/dmesg.1.gz (penúltimo y comprimido)
  • /var/log/dmesg.2.gz (antepenúltimo y comprimido)
  • /var/log/dmesg.3.gz (3º del último y comprimido)
  • /var/log/dmesg.4.gz (4to del último y comprimido)

Si tiene permisos, puede leerlos con cat, moreo lesspara los simples y zcat, zmoreo zlesspara los comprimidos

Diego Alonso
fuente
Este no es el caso en mi Debian (prueba - estiramiento, no particularmente modificado, actualizado a partir de hoy). Esto puede estar relacionado consystemd , ya que dmesg está registrado en systemd (vea la respuesta a continuación).
Att Righ
gracias por tu respuesta. Ahora conozco las palabras en inglés penultimateyantepenultimate
transang