Як читати dmesg з попереднього сеансу? (dmesg.0)


29

dmesg - це команда для читання вмісту з /var/log/dmesg. Приємна річ у порівнянні з less /var/log/dmesgтим, що я можу використовувати прапор -T для зчитування часу людини.

Тепер я хотів би подивитися /var/log/dmesg.0, побачити, як мій комп'ютер розбився. Файл містить журнали попереднього сеансу. Але я хочу використовувати прапор -T з команди dmesg. Або щось рівнозначне.

Будь-яка ідея як?

Я не заперечував би проти графічного інструменту, але найкращим було б рішення для кліпів.

Відповіді:


29

Щоб вияснити фундаментальне неправильне уявлення, dmesgне читається з /var/log/dmesg. Він зчитується безпосередньо з буфера кільця ядра та дає вам останні останні N повідомлень. Наприкінці процесу завантаження dmesgвикликається запис завантажувальних повідомлень /var/log/dmesg(при цьому старі версії цього файлу обертаються звичайним чином).

Після того як ви в системному журналі працює ( syslogd, rsyslogd, syslog-ngі т.д.) вона зчитує з ядра буфера і запису в файл , наприклад , як /var/log/kern.log. (Це для Debian; інші системи будуть відрізнятися). Якщо припустити, що ваша система змогла записати на диск і промити буфери диска ще до того, як він вийшов з ладу, саме тут ви знайдете крики ядра, що відмирають.

У моїй системі Debian /var/log/kern.logфайл містить прочитані людиною часові позначки.


1
Я думаю, це відповідає на моє запитання, дякую! На жаль, я досі не можу зрозуміти, чому він виходить з ладу призупиненням, але це вже інша історія.
donquixote

Одні мої машини, окрім dmesgяк записуються kern.log, зокрема наступні демони, зокрема наступні демониgnome-keyring-d,goa-daemon,gvfsd,gvfsd-network,gvfs-gphoto2-vo,NetworkManager,upowerd
Att Righ

@AttRigh, єдине, що потрібно написати в цей файл - це ядро. Ви можете задати нове запитання
roaima

@roima Цікаво ... У мене дійсно не виникає питання, оскільки я із задоволенням використовую journalctlдля отримання журналів! Я просто думав, що інші можуть бути зацікавлені в цій невідповідності. Дивлячись на мою систему i) вона використовує rsyslogдля входу до kern.logнаступного запису kern.* -/var/log/kern.log, дзвінок, який debsums -eпідтверджує, що жоден з моїх файлів конфігурації, пов'язаних rsyslogабо systemdне змінений ( serverfault.com/questions/90400/… ), моя версія rsyslog 8.24.0-1, і я використовую розтяжку debian.
Att Righ

@AttRigh Ви також можете прочитати unix.stackexchange.com/a/294206/100397
roaima

34

Хоча трохи запізнився на ОП ...

Я використовую Fedora, але якщо ваша система використовує, journalctlто ви можете легко отримати повідомлення ядра (журнал dmesg) від попереднього відключення / аварії (у dmesg -Tформаті) за допомогою наступного.

Параметри:

  • -k (dmesg)
  • -b < boot_number > (Скільки перезавантажуються назад 0, -1, -2 тощо)
  • -коротка точність (dmesg -T)
  • -p пріоритет Фільтр за вихідним пріоритетом (4 для фільтрації повідомлень та інформації).

ПРИМІТКА. Існує також -o shortі -o short-isoдата, яка дає вам лише дату, і дату - час у форматі iso відповідно.

Команди:

  • Поточне завантаження: journalctl -o short-precise -k
  • Останнє завантаження: journalctl -o short-precise -k -b -1
  • Два чоботи до: journalctl -o short-precise -k -b -2
  • І так далі

Приклад Вихід:

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

Кількість черевиків, на які можна озирнутися, можна переглянути з наступним.

  • journalctl --list-boot

Вихід journalctl --list-bootвиглядає наступним чином.

 -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
Пізно на ОП. Ніколи не спізнюйтесь з майбутніми гуглерами!
Циан

4

У Debian dmesgжурнали зберігаються як:

  • /var/log/dmesg (живе та нестиснене)
  • /var/log/dmesg.0 (останній сеанс і нестиснений)
  • /var/log/dmesg.1.gz (передостаннє і стиснене)
  • /var/log/dmesg.2.gz (передньопоточний та стислий)
  • /var/log/dmesg.3.gz (3-й з останніх і стислих)
  • /var/log/dmesg.4.gz (4-й з останнього та стислий)

Якщо у вас є дозволи, ви можете їх читати cat, moreабо lessдля звичайних zcat, zmoreабо zlessдля стислих


Це не так у мого debian (тестування - розтягнення, не особливо модифіковане, сучасне на сьогодні). Це може бути пов'язано з systemd, так як dmesg буде записуватися в Systemd (див відповідь нижче).
Att Righ

Дякую за вашу відповідь. Тепер я знаю англійських слів penultimateіantepenultimate
transang
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.