Come leggere dmesg dalla sessione precedente? (Dmesg.0)


29

dmesg è un comando per leggere il contenuto da /var/log/dmesg. La cosa bella rispetto a less /var/log/dmesgquella è che posso usare il flag -T per l'output di tempo leggibile dall'uomo.

Ora vorrei guardare /var/log/dmesg.0, per vedere come il mio computer si è bloccato. Il file contiene i registri della sessione precedente. Ma voglio usare il flag -T dal comando dmesg. O qualcosa di equivalente.

Qualche idea su come?

Non mi dispiacerebbe uno strumento grafico, ma la migliore sarebbe una soluzione cli.

Risposte:


29

Per chiarire un malinteso fondamentale, dmesgnon si legge /var/log/dmesg. Legge direttamente dal buffer dell'anello del kernel e fornisce i messaggi N più recenti. Verso la fine del processo di avvio, dmesgviene invocato per scrivere i messaggi di avvio /var/log/dmesg(con le versioni precedenti di quel file ruotate nel solito modo).

Una volta che si dispone di un'esecuzione syslog ( syslogd, rsyslogd, syslog-ng, etc.) si legge dal kernel buffer e scrive in un file, ad esempio /var/log/kern.log. (Questo è per Debian; altri sistemi varieranno). Supponendo che il tuo sistema sia stato in grado di scrivere sul disco e svuotare i buffer del disco prima che si arrestasse in modo anomalo, ecco dove troverai le urla morenti del kernel.

Sul mio sistema Debian il /var/log/kern.logfile contiene timestamp leggibili dall'uomo.


1
Penso che questo risponda alla mia domanda, grazie! Purtroppo non riesco ancora a capire perché si blocca in sospensione, ma questa è un'altra storia.
donquixote,

Una delle mie cose della macchina oltre dmesga quelle su cui vengono scritti kern.log, in particolare i seguenti daemon in particolare i seguenti daemongnome-keyring-d,goa-daemon,gvfsd,gvfsd-network,gvfs-gphoto2-vo,NetworkManager,upowerd
Att Righ,

@AttRigh l'unica cosa che dovrebbe scrivere su quel file è il kernel. Potresti fare una nuova domanda
roaima,

@roima Interessante ... Non ho davvero una domanda da fare dato che sono felice di usare journalctli log! Pensavo solo che altri potessero essere interessati a questa incoerenza. Guardando il mio sistema i) sta usando rsyslogper accedere kern.logusando la seguente voce kern.* -/var/log/kern.log, una chiamata per debsums -econfermare che nessuno dei miei file di configurazione relativi rsyslogo systemdè stato modificato ( serverfault.com/questions/90400/… ), la mia versione di rsyslog è 8.24.0-1, e sto usando debian stretch.
Att Righ,

@AttRigh ti potrebbe piacere anche leggere unix.stackexchange.com/a/294206/100397
roaima

34

Anche se un po 'in ritardo per l'OP ...

Uso Fedora, ma se il tuo sistema lo utilizza journalctl, puoi facilmente ottenere i messaggi del kernel (dmesg log) da precedenti arresti / arresti anomali (in un dmesg -Tformato) attraverso i seguenti.

Opzioni:

  • -k (dmesg)
  • -b < boot_number > (quanti riavvii fa 0, -1, -2, ecc.)
  • -o breve-preciso (dmesg -T)
  • -p priorità Filtra per output prioritario (4 per filtrare avviso e informazioni).

NOTA: c'è anche un -o shorte -o short-isoche ti dà solo la data e la data e l'ora in formato iso rispettivamente.

comandi:

  • Avvio corrente: journalctl -o short-precise -k
  • Ultimo avvio: journalctl -o short-precise -k -b -1
  • Due stivali prima: journalctl -o short-precise -k -b -2
  • E così via

Esempio di output:

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 quantità di stivali che puoi guardare indietro può essere visualizzata come segue.

  • journalctl --list-boot

L'output di journalctl --list-bootè simile al seguente.

 -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

4
In ritardo per l'OP. Mai in ritardo per futuri googler!
Qian,

4

In Debian, i dmesglog sono memorizzati come:

  • /var/log/dmesg (live e non compresso)
  • /var/log/dmesg.0 (ultima sessione e non compresso)
  • /var/log/dmesg.1.gz (penultimo e compresso)
  • /var/log/dmesg.2.gz (antepenultimate e compresso)
  • /var/log/dmesg.3.gz (3o dall'ultimo e compresso)
  • /var/log/dmesg.4.gz (4 ° dall'ultimo e compresso)

Se hai i permessi, puoi leggerli con cat, moreo lessper quelli semplici e zcat, zmoreo zlessper quelli compressi


Questo non è il caso del mio debian (test - tratto, non particolarmente modificato, aggiornato ad oggi). Questo può essere correlato a systemd, poiché dmesg è registrato su systemd (vedi risposta sotto).
Att Righ,

grazie per la tua risposta. Ora sono a conoscenza delle parole inglesi penultimateeantepenultimate
Transang
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.