Bagaimana cara membaca dmesg dari sesi sebelumnya? (dmesg.0)

29

dmesg adalah perintah untuk membaca isinya /var/log/dmesg. Yang menyenangkan dibandingkan less /var/log/dmesgadalah bahwa saya dapat menggunakan flag -T untuk output waktu yang dapat dibaca manusia.

Sekarang saya ingin melihat /var/log/dmesg.0, untuk melihat bagaimana komputer saya crash. File tersebut berisi log dari sesi sebelumnya. Tapi saya ingin menggunakan flag -T dari perintah dmesg. Atau sesuatu yang setara.

Ada yang tahu bagaimana?

Saya tidak akan keberatan alat grafis, tetapi yang terbaik akan menjadi solusi cli.

donquixote
sumber

Jawaban:

29

Untuk menjernihkan kesalahpahaman mendasar, dmesgjangan dibaca /var/log/dmesg. Bunyinya langsung dari buffer cincin kernel dan memberi Anda pesan N terbaru. Menjelang akhir proses boot, dmesgdipanggil untuk menulis pesan boot ke /var/log/dmesg(dengan versi yang lebih lama dari file yang diputar dengan cara biasa).

Setelah Anda memiliki berjalan syslog ( syslogd, rsyslogd, syslog-ng, dll) dibaca dari kernel buffer dan menulis ke file seperti /var/log/kern.log. (Ini untuk Debian; sistem lain akan berbeda-beda). Dengan asumsi sistem Anda dapat menulis ke disk dan membersihkan buffer disk sebelum crash, di situlah Anda akan menemukan jeritan sekarat dari kernel.

Pada sistem Debian saya /var/log/kern.logfile tersebut berisi stempel waktu yang dapat dibaca manusia.

roaima
sumber
1
Saya pikir ini menjawab pertanyaan saya, terima kasih! Sayangnya saya masih tidak tahu mengapa crash pada saat ditangguhkan, tapi itu cerita lain.
donquixote
Salah satu mesin saya selain dmesgmenulis kern.log, khususnya daemon berikut khususnya daemon berikutgnome-keyring-d,goa-daemon,gvfsd,gvfsd-network,gvfs-gphoto2-vo,NetworkManager,upowerd
Att Righ
@AttRigh satu-satunya hal yang seharusnya ditulis ke file itu adalah kernel. Anda mungkin ingin mengajukan pertanyaan baru
roaima
@roima Menarik ... Saya tidak punya pertanyaan untuk ditanyakan karena saya senang menggunakan journalctluntuk mendapatkan log! Saya hanya berpikir orang lain mungkin tertarik dengan ketidakkonsistenan ini. Melihat sistem saya i) digunakan rsysloguntuk masuk kern.logmenggunakan entri berikut kern.* -/var/log/kern.log, panggilan untuk debsums -emengonfirmasi bahwa tidak ada file konfigurasi saya yang terkait rsyslogatau systemdtelah dimodifikasi ( serverfault.com/questions/90400/… ), versi rsyslog saya adalah 8.24.0-1, dan saya menggunakan stretch debian.
Att Righ
@AttRigh Anda mungkin juga ingin membaca unix.stackexchange.com/a/294206/100397
roaima
34

Meskipun agak terlambat untuk ...

Saya menggunakan Fedora, tetapi jika sistem Anda menggunakan journalctlmaka Anda dapat dengan mudah mendapatkan pesan kernel (log dmesg) dari shutdown / crash sebelumnya (dalam dmesg -Tformat) melalui berikut ini.

Pilihan:

  • -k (dmesg)
  • -b < boot_number > (Berapa banyak reboot lalu 0, -1, -2, dll.)
  • -o pendek-tepat (dmesg -T)
  • Prioritas -p Filter berdasarkan prioritas output (4 untuk menyaring pemberitahuan dan info).

CATATAN: ada juga -o shortdan -o short-isoyang memberi Anda hanya tanggal, dan tanggal-waktu dalam format iso masing-masing.

Perintah:

  • Boot saat ini: journalctl -o short-precise -k
  • Boot terakhir: journalctl -o short-precise -k -b -1
  • Dua sepatu bot sebelumnya: journalctl -o short-precise -k -b -2
  • Dan seterusnya

Contoh 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

Jumlah sepatu bot yang dapat Anda lihat kembali dapat dilihat dengan yang berikut ini.

  • journalctl --list-boot

Outputnya journalctl --list-bootterlihat seperti berikut.

 -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
sumber
4
Terlambat untuk OP. Tidak ada kata terlambat untuk googler masa depan!
Qian
4

Dalam Debian, dmesglog disimpan sebagai:

  • /var/log/dmesg (hidup dan tidak terkompresi)
  • /var/log/dmesg.0 (sesi terakhir dan tidak terkompresi)
  • /var/log/dmesg.1.gz (kedua dari belakang dan dikompresi)
  • /var/log/dmesg.2.gz (antepenultimate dan terkompresi)
  • /var/log/dmesg.3.gz (3 dari terakhir dan terkompresi)
  • /var/log/dmesg.4.gz (4 dari terakhir dan terkompresi)

Jika Anda memiliki izin, Anda dapat membacanya dengan cat, moreatau lessuntuk yang polos dan zcat, zmoreatau zlessuntuk yang terkompresi

Diego Alonso
sumber
Ini tidak terjadi pada debian saya (pengujian - peregangan, tidak dimodifikasi secara khusus, terkini pada hari ini). Hal ini mungkin berkaitan dengan systemd, karena dmesg adalah login ke systemd (lihat jawabannya di bawah ini).
Att Righ
Terima kasih atas jawaban anda. Sekarang saya menyadari kata penultimate- kata bahasa Inggris danantepenultimate
transang