Wie lese ich dmesg aus der vorherigen Sitzung? (dmesg.0)


29

dmesg ist ein Befehl zum Lesen des Inhalts /var/log/dmesg. Das Schöne im Vergleich dazu less /var/log/dmesgist, dass ich das -T-Flag für eine vom Menschen lesbare Zeitausgabe verwenden kann.

Jetzt möchte ich schauen /var/log/dmesg.0, wie mein Computer abgestürzt ist. Die Datei enthält die Protokolle der vorherigen Sitzung. Aber ich möchte das -T-Flag aus dem Befehl dmesg verwenden. Oder etwas Äquivalentes.

Irgendeine Idee wie?

Mir würde ein grafisches Tool nichts ausmachen, aber das Beste wäre eine CLI-Lösung.

Antworten:


29

Um ein grundlegendes Missverständnis auszuräumen, dmesgliest man nicht aus /var/log/dmesg. Es liest direkt aus dem Kernel-Ringpuffer und gibt Ihnen die neuesten N Nachrichten. Gegen Ende des Startvorgangs dmesgwird aufgerufen, um die Startnachrichten zu schreiben /var/log/dmesg(wobei ältere Versionen dieser Datei auf die übliche Weise gedreht werden).

Sobald Sie einen Syslog - Lauf haben ( syslogd, rsyslogd, syslog-ng, etc.) liest sie aus dem Puffer - Kernel und Schreiben in eine Datei wie /var/log/kern.log. (Dies ist für Debian; andere Systeme werden variieren). Angenommen, Ihr System konnte auf die Festplatte schreiben und die Festplattenpuffer leeren, bevor es abstürzte, dann werden Sie die sterbenden Schreie des Kernels hören.

Auf meinem Debian-System /var/log/kern.logenthält die Datei lesbare Zeitstempel.


1
Ich denke das beantwortet meine Frage, danke! Leider kann ich immer noch nicht herausfinden, warum es beim Anhalten abstürzt, aber das ist eine andere Geschichte.
donquixote

Einer meiner Maschine Dinge anders als dmesggeschrieben zu werden kern.log, speziell die folgenden Dämonen speziell die folgenden Dämonengnome-keyring-d,goa-daemon,gvfsd,gvfsd-network,gvfs-gphoto2-vo,NetworkManager,upowerd
Att Righ

@AttRigh Das einzige, was in diese Datei geschrieben werden soll, ist der Kernel. Vielleicht
möchten

@roima Interessant ... Ich habe keine wirkliche Frage, da ich glücklich bin journalctl, die Logs zu bekommen! Ich dachte nur, dass andere an dieser Inkonsistenz interessiert sein könnten. Betrachtet man mein System i) wird es verwendet rsyslog, um sich kern.logmit dem folgenden Eintrag anzumelden kern.* -/var/log/kern.log, ein Aufruf, um zu debsums -ebestätigen, dass keine meiner Konfigurationsdateien in Bezug auf rsyslogoder systemdgeändert wurde ( serverfault.com/questions/90400/… ). Meine Version von rsyslog lautet 8.24.0-1: und ich benutze debian stretch.
Att Righ

@AttRigh Sie könnten auch gerne lesen unix.stackexchange.com/a/294206/100397
roaima

34

Obwohl ein bisschen zu spät für die OP ...

Ich verwende Fedora, aber wenn Ihr System es verwendet journalctl, können Sie die Kernelmeldungen (dmesg-Protokoll) vom vorherigen Herunterfahren / Absturz (in einem dmesg -TFormat) wie folgt leicht abrufen .

Optionen:

  • -k (dmesg)
  • -b < Startnummer > (Wie viele Neustarts vor 0, -1, -2 usw.)
  • -o kurz-präzise (dmesg -T)
  • -p Priorität Nach Prioritätsausgabe filtern (4, um Hinweise und Informationen herauszufiltern).

HINWEIS: Es gibt auch ein -o shortund, -o short-isodas nur das Datum und die Uhrzeit im ISO-Format angibt.

Befehle:

  • Aktueller Boot: journalctl -o short-precise -k
  • Letzter Boot: journalctl -o short-precise -k -b -1
  • Zwei Stiefel vor: journalctl -o short-precise -k -b -2
  • Und so weiter

Beispielausgabe:

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

Die Anzahl der Stiefel, auf die Sie zurückblicken können, kann wie folgt eingesehen werden.

  • journalctl --list-boot

Die Ausgabe von journalctl --list-bootsieht wie folgt aus.

 -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
Spät zur OP. Nie zu spät für zukünftige Googler!
Qian,

4

In Debian werden dmesgProtokolle gespeichert als:

  • /var/log/dmesg (live und unkomprimiert)
  • /var/log/dmesg.0 (letzte Sitzung und unkomprimiert)
  • /var/log/dmesg.1.gz (vorletzte und komprimierte)
  • /var/log/dmesg.2.gz (vorletzt und komprimiert)
  • /var/log/dmesg.3.gz (3. vom letzten und komprimiert)
  • /var/log/dmesg.4.gz (4. vom letzten und komprimiert)

Iif Sie erlaubt haben, können Sie sie mit lesen cat, moreoder lessfür Normal Einsen und zcat, zmoreoder zlessfür Druck diejenigen


Dies ist bei meinem Debian nicht der Fall (Testen - Strecken, nicht besonders modifiziert, Stand heute). Dies kann in Beziehung gesetzt werden systemd, da dmesg ist auf systemd angemeldet (siehe Antwort unten).
Att Righ

Danke für deine Antwort. Jetzt penultimateantepenultimate
kenne
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.