Jak czytać dmesg z poprzedniej sesji? (dmesg.0)


29

dmesg to polecenie do odczytu zawartości /var/log/dmesg. Zaletą less /var/log/dmesgjest to, że mogę użyć flagi -T do odczytu czasu czytelnego dla człowieka.

Teraz chciałbym spojrzeć /var/log/dmesg.0, żeby zobaczyć, jak mój komputer się zawiesił. Plik zawiera dzienniki z poprzedniej sesji. Ale chcę użyć flagi -T z polecenia dmesg. Lub coś równoważnego.

Masz pomysł jak?

Nie miałbym nic przeciwko graficznemu narzędziu, ale najlepsze byłoby rozwiązanie cli.

Odpowiedzi:


29

Aby wyjaśnić podstawowe nieporozumienie, dmesgnie czyta z /var/log/dmesg. Odczytuje bezpośrednio z bufora pierścienia jądra i podaje najnowsze N ​​wiadomości. Pod koniec procesu rozruchu dmesgwywoływane jest zapisywanie komunikatów rozruchowych /var/log/dmesg(przy starszych wersjach tego pliku obracanych w zwykły sposób).

Raz masz syslog biegania ( syslogd, rsyslogd, syslog-ng, itd.) Odczytuje z jądra buforu i zapisuje do pliku, takie jak /var/log/kern.log. (Dotyczy to Debiana; inne systemy będą się różnić). Zakładając, że twój system był w stanie zapisać na dysk i opróżnić bufory dysku, zanim się zawiesił, to tam znajdziesz umierające krzyki jądra.

W moim systemie Debian /var/log/kern.logplik zawiera znaczniki czasu czytelne dla człowieka.


1
Myślę, że to odpowiada na moje pytanie, dzięki! Niestety nadal nie mogę zrozumieć, dlaczego zawiesza się przy zawieszeniu, ale to już inna historia.
donquixote

Jedną z moich maszyn jest coś innego niż dmesgnapisanie do kern.log, w szczególności następujące demony, w szczególności następujące demonygnome-keyring-d,goa-daemon,gvfsd,gvfsd-network,gvfs-gphoto2-vo,NetworkManager,upowerd
Att Righ

@AttRigh jedyną rzeczą, którą należy zapisać do tego pliku, jest jądro. Możesz zadać nowe pytanie
roaima

@roima Interesujące ... Naprawdę nie mam pytania, ponieważ chętnie korzystam journalctlz dzienników! Pomyślałem, że inni mogą być zainteresowani tą niekonsekwencją. Patrząc na mój system i) używa się rsyslogdo zalogowania kern.logprzy użyciu następującego wpisu kern.* -/var/log/kern.log, wywołania, które debsums -epotwierdza, że ​​żaden z moich plików konfiguracyjnych nie jest powiązany rsysloglub systemdnie został zmodyfikowany ( serverfault.com/questions/90400/… ), moja wersja rsyslog to 8.24.0-1: i używam debian stretch.
Att Righ

@AttRigh, możesz także przeczytać unix.stackexchange.com/a/294206/100397
roaima

34

Chociaż trochę za późno na OP ...

Używam Fedory, ale jeśli używasz twojego systemu journalctl, możesz łatwo pobrać komunikaty jądra (dziennik dmesg) z wcześniejszego zamknięcia / awarii (w dmesg -Tformacie) poprzez następujące.

Opcje:

  • -k (dmesg)
  • -b < numer_ rozruchu > (Ile ponownych uruchomień 0, -1, -2 itd.)
  • -o krótko-precyzyjny (dmesg -T)
  • -p priorytet Filtruj według wyjścia priorytetowego (4, aby odfiltrować powiadomienia i informacje).

UWAGA: istnieje również -o shorti, -o short-isoktóry podaje tylko datę i datę i godzinę odpowiednio w formacie ISO.

Polecenia:

  • Aktualny rozruch: journalctl -o short-precise -k
  • Ostatni rozruch: journalctl -o short-precise -k -b -1
  • Dwa buty przed: journalctl -o short-precise -k -b -2
  • I tak dalej

Przykładowe dane wyjściowe:

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

Ilość butów, na które można spojrzeć wstecz, można wyświetlić w następujący sposób.

  • journalctl --list-boot

Dane wyjściowe journalctl --list-bootwygląda następująco.

 -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óźniony na OP. Nigdy nie spóźnij się na przyszłych pracowników Google!
Qian

4

W Debianie dmesgdzienniki są przechowywane jako:

  • /var/log/dmesg (na żywo i nieskompresowane)
  • /var/log/dmesg.0 (ostatnia sesja i nieskompresowany)
  • /var/log/dmesg.1.gz (przedostatni i skompresowany)
  • /var/log/dmesg.2.gz (przedplenetalny i skompresowany)
  • /var/log/dmesg.3.gz (Trzeci od ostatniego i skompresowany)
  • /var/log/dmesg.4.gz (4. od ostatniego i skompresowany)

Jeśli masz pozwolenia, możesz je odczytać cat, morelub lessdla zwykłych i zcat/ zmorelub zlessskompresowanych


Nie dotyczy to mojego debiana (testowanie - stretch, niezmodyfikowane, aktualne na dzień dzisiejszy). Może to być związane systemd, ponieważ dmesg jest zalogowany do systemd (patrz odpowiedź poniżej).
Att Righ

dzięki za odpowiedź. Teraz jestem świadomy angielskich słów penultimateiantepenultimate
transang
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.