Как прочитать 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файл содержит удобочитаемые метки времени.

roaima
источник
1
Я думаю, что это отвечает на мой вопрос, спасибо! К сожалению, я до сих пор не могу понять, почему он зависает при приостановке, но это другая история.
Donquixote
Одна моя машина - это вещи, отличные от dmesgзаписываемых kern.log, в частности, следующие демоны, в частности, следующие демоныgnome-keyring-d,goa-daemon,gvfsd,gvfsd-network,gvfs-gphoto2-vo,NetworkManager,upowerd
Att Righ
@AttRigh единственное, что должно записать в этот файл - это ядро. Вы можете задать новый вопрос
roaima
@roima Интересно ... У меня нет вопросов, потому что я счастлив использовать journalctlжурналы! Я просто думал, что другие могут быть заинтересованы в этом несоответствии. Глядя на моей системе я) он использует , rsyslogчтобы войти в , kern.logиспользуя следующую запись kern.* -/var/log/kern.log, вызов debsums -eподтверждает , что ни один из моих файлов конфигурации не связанные с rsyslogили systemdбыл изменен ( serverfault.com/questions/90400/... ), моя версия Rsyslog есть 8.24.0-1, и я использую Debian Stretch.
Att Righ
@AttRigh Вы также можете прочитать unix.stackexchange.com/a/294206/100397
роайма,
34

Хотя немного поздно для ОП ...

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

Опции:

  • -k (dmesg)
  • -b < номер_папки > (сколько перезагрузок назад 0, -1, -2 и т. д.)
  • -о короткая (dmesg -T)
  • -p priority Фильтр по приоритетному выводу (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
Procyclinsur
источник
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