이전 세션의 dmesg를 읽는 방법은 무엇입니까? (dmesg.0)

이전 세션의 dmesg를 읽는 방법은 무엇입니까? (dmesg.0)

dmesg는 내용을 읽는 명령입니다 /var/log/dmesg. 대조적으로 좋은 점 less /var/log/dmesg은 -T 플래그를 사용하여 사람이 읽을 수 있는 시간 출력을 얻을 수 있다는 것입니다.

/var/log/dmesg.0이제 내 컴퓨터가 어떻게 충돌하는지 확인하고 싶습니다 . 이 파일에는 이전 세션의 로그가 포함되어 있습니다. 하지만 dmesg 명령에서 -T 플래그를 사용하고 싶습니다. 아니면 그런 것.

어떻게 해야할지 아시나요?

그래픽 도구는 마음에 들지 않지만 가장 좋은 것은 CLI 솔루션입니다.

답변1

OP가 좀 늦었지만..

저는 Fedora를 사용하지만 귀하의 시스템이 Fedora를 사용하는 경우 journalctl이전 종료/충돌(일부 형식)에 대한 커널 메시지(dmesg 로그)를 쉽게 얻을 수 있습니다.dmesg -T

옵션:

  • -k(dmesg)
  • -b <부팅 번호> (0, -1, -2 등 이전에 다시 시작한 횟수)
  • -o 짧은 정밀도(dmesg -T)
  • -피우선순위우선순위에 따른 출력 필터링(4개는 알림 및 메시지 필터링)

참고: 날짜와 날짜 및 시간을 각각 iso 형식으로 제공하는 -o short및 도 있습니다 .-o short-iso

주문하다:

  • 모든 부팅 주기:journalctl -o short-precise -k -b all
  • 현재 시작됨: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

답변2

근본적인 오해를 풀려면 dmesg을 읽지 마세요 /var/log/dmesg. 커널 링 버퍼에서 직접 읽고 마지막 N개 메시지를 제공합니다. 부팅 프로세스가 끝날 무렵 dmesg부팅 메시지를 작성하라는 호출이 이루어집니다 /var/log/dmesg(일반적인 방식으로 파일의 이전 버전 회전).

syslogdsyslog( , rsyslogd등 ) 를 실행하면 syslog-ng커널 버퍼에서 데이터를 읽고 이를 파일(예 /var/log/kern.log: . 시스템이 충돌하기 전에 디스크에 쓰고 디스크 버퍼를 플러시할 수 있었다고 가정하면 거기서 커널의 죽어가는 비명을 발견하게 될 것입니다.

내 Debian 시스템에서는 /var/log/kern.log파일에 사람이 읽을 수 있는 타임스탬프가 포함되어 있습니다.

답변3

Debian에서 dmesg로그는 다음과 같이 저장됩니다.

  • /var/log/dmesg(실시간 및 비압축)
  • /var/log/dmesg.0(마지막 세션 및 압축되지 않음)
  • /var/log/dmesg.1.gz(두 번째 및 압축)
  • /var/log/dmesg.2.gz(카운트다운, 카운트다운, 전면 및 압축)
  • /var/log/dmesg.3.gz(마지막에서 4번째, 압축됨)
  • /var/log/dmesg.4.gz(마지막에서 다섯 번째, 압축됨)

적절한 권한이 있는 경우 (일반 파일의 경우) 및 압축 파일의 경우 , 또는 를 사용하거나 읽을 cat수 있습니다.morelesszcatzmorezless

답변4

알파인리눅스의 경우,

echo 'previous_dmesg=yes' >> /etc/conf.d/bootmisc

mv /var/log/dmesg /var/log/dmesg.oldbootmisc에서 실행 됩니다 .

관련 정보