Làm thế nào để đọc dmesg từ phiên trước? (dmesg.0)


29

dmesg là một lệnh để đọc nội dung từ /var/log/dmesg. Điều tuyệt vời so với less /var/log/dmesglà tôi có thể sử dụng cờ -T cho đầu ra thời gian có thể đọc được của con người.

Bây giờ tôi muốn xem xét /var/log/dmesg.0, để xem máy tính của tôi bị hỏng như thế nào. Các tập tin chứa các bản ghi từ phiên trước đó. Nhưng tôi muốn sử dụng cờ -T từ lệnh dmesg. Hoặc một cái gì đó tương đương.

Có ý kiến ​​gì không?

Tôi sẽ không nhớ một công cụ đồ họa, nhưng tốt nhất sẽ là một giải pháp cli.

Câu trả lời:


29

Để làm sáng tỏ một quan niệm sai lầm cơ bản, dmesgkhông đọc từ /var/log/dmesg. Nó đọc trực tiếp từ bộ đệm vòng kernel và cung cấp cho bạn các tin nhắn N gần đây nhất. Đến cuối quá trình khởi động, dmesgđược gọi để ghi thông điệp khởi động /var/log/dmesg(với các phiên bản cũ hơn của tệp đó được xoay theo cách thông thường).

Một khi bạn có một chạy syslog ( syslogd, rsyslogd, syslog-ng, vv) nó đọc từ hạt nhân đệm và ghi vào một tập tin như /var/log/kern.log. (Cái này dành cho Debian; các hệ thống khác sẽ thay đổi). Giả sử hệ thống của bạn đã có thể ghi vào đĩa và xóa bộ đệm đĩa trước khi nó bị hỏng, đó là nơi bạn sẽ tìm thấy tiếng thét sắp chết của hạt nhân.

Trên hệ thống Debian của tôi, /var/log/kern.logtệp chứa các dấu thời gian có thể đọc được của con người.


1
Tôi nghĩ rằng điều này trả lời câu hỏi của tôi, cảm ơn! Thật không may, tôi vẫn không thể hiểu tại sao nó bị treo do đình chỉ, nhưng đó là một câu chuyện khác.
donquixote

Một trong những thứ máy của tôi ngoài việc dmesgđược viết cho kern.log, cụ thể là các trình tiện ích sau đây cụ thể là các trình tiện ích saugnome-keyring-d,goa-daemon,gvfsd,gvfsd-network,gvfs-gphoto2-vo,NetworkManager,upowerd
Att Righ

@AttRigh điều duy nhất được cho là ghi vào tệp đó là kernel. Bạn có thể muốn hỏi một câu hỏi mới
roaima

@roima Thú vị ... Tôi thực sự không có câu hỏi nào vì tôi rất vui khi sử dụng journalctlđể lấy nhật ký! Tôi chỉ nghĩ rằng những người khác có thể quan tâm đến sự không nhất quán này. Nhìn vào hệ thống của tôi i) nó đang sử dụng rsyslogđể đăng nhập kern.logbằng cách sử dụng mục nhập sau kern.* -/var/log/kern.log, một cuộc gọi để debsums -exác nhận rằng không có tệp cấu hình nào của tôi liên quan đến rsysloghoặc systemdđã được sửa đổi ( serverfault.com/questions/90400/ ,), phiên bản rsyslog của tôi là 8.24.0-1, và tôi đang sử dụng kéo dài debian.
Att Righ

@AttRigh bạn cũng có thể muốn đọc unix.stackexchange.com/a/294206/100394
roaima

34

Mặc dù hơi muộn cho OP ...

Tôi sử dụng Fedora, nhưng nếu hệ thống của bạn sử dụng journalctlthì bạn có thể dễ dàng nhận được các thông điệp kernel (nhật ký dmesg) từ tắt / sập trước đó (theo dmesg -Tđịnh dạng) thông qua các mục sau.

Tùy chọn:

  • -k (dmesg)
  • -b < boot_number > (Có bao nhiêu lần khởi động lại trước 0, -1, -2, v.v.)
  • -o ngắn-chính xác (dmesg -T)
  • -p ưu tiên Lọc theo đầu ra ưu tiên (4 để lọc thông báo và thông tin).

LƯU Ý: cũng có một -o short-o short-isochỉ cung cấp cho bạn ngày và thời gian ngày ở định dạng iso tương ứng.

Các lệnh:

  • Khởi động hiện tại: journalctl -o short-precise -k
  • Lần khởi động cuối cùng: journalctl -o short-precise -k -b -1
  • Hai đôi ủng trước: journalctl -o short-precise -k -b -2
  • Vân vân

Kết quả ví dụ:

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

Số lượng giày bạn có thể nhìn lại có thể được xem với những điều sau đây.

  • journalctl --list-boot

Đầu ra của journalctl --list-boothình như sau.

 -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
Muộn cho OP. Không bao giờ muộn cho các nhân viên Google trong tương lai!
Qian

4

Trong Debian, dmesgnhật ký được lưu trữ dưới dạng:

  • /var/log/dmesg (sống và không nén)
  • /var/log/dmesg.0 (phiên cuối cùng và không nén)
  • /var/log/dmesg.1.gz (áp chót và nén)
  • /var/log/dmesg.2.gz (chống cận và nén)
  • /var/log/dmesg.3.gz (Thứ 3 từ cuối cùng và được nén)
  • /var/log/dmesg.4.gz (Thứ 4 từ cuối cùng và được nén)

Nếu bạn có giấy phép, bạn có thể đọc chúng với cat, morehoặc lesscho những người bình thường và zcat, zmorehoặc zlesscho những người được nén


Đây không phải là trường hợp trên debian của tôi (thử nghiệm - kéo dài, không được sửa đổi đặc biệt, cập nhật cho đến ngày hôm nay). Điều này có thể liên quan đến systemd, vì dmesg được đăng nhập vào systemd (xem câu trả lời bên dưới).
Att Righ

cảm ơn câu trả lời của bạn. Bây giờ tôi đã nhận thức được các từ tiếng Anh penultimateantepenultimate
transang
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.