Linux

[리눅스] dmesg 명령어 완벽 가이드 사용법(부팅로그)

인생아 2024. 10. 12. 13:13
반응형

dmesgLinux 커널 메시지 버퍼에 저장된 메시지를 확인할 수 있는 명령어입니다. 시스템 부팅 시나 하드웨어 상태 변화, 드라이버의 로드/언로드와 같은 커널 이벤트가 발생할 때, 커널은 이러한 메시지를 기록합니다. 이러한 로그는 시스템 진단이나 문제 해결에 매우 유용하며, 하드웨어 관련 오류 또는 부팅 과정에서 발생한 문제를 파악하는 데 자주 사용됩니다.

dmesg의 주요 기능

  • 커널 로그 조회: 시스템 부팅 시나 하드웨어 변경 시 커널에서 출력된 메시지를 확인할 수 있습니다.
  • 시스템 진단: 하드웨어 오류, 메모리 상태, 장치 연결 문제 등을 쉽게 진단할 수 있습니다.
  • 로그 필터링: 특정 메시지를 필터링하여 필요한 정보만 출력할 수 있습니다.

dmesg 명령어 기본 구문

dmesg [옵션]

옵션을 사용하지 않고 명령어를 실행하면 전체 커널 로그가 출력됩니다. 로그의 길이가 길어질 수 있으므로 필터링이나 페이징을 사용하여 원하는 정보를 검색할 수 있습니다.

주요 옵션

  • -H: 사람이 읽기 쉽게 출력합니다. 메시지에 타임스탬프도 포함되어 표시됩니다.
  • -T: 시간 정보를 표시합니다. 로그에 시간 정보가 함께 표시되어 언제 해당 메시지가 기록되었는지 확인할 수 있습니다.
  • -C: 버퍼를 지웁니다. 기존 커널 로그를 모두 지우고 새로 기록된 메시지만 확인할 수 있습니다.
  • --level=LEVEL: 특정 로그 레벨의 메시지만 출력할 수 있습니다. 예: --level=err는 오류 메시지만 표시.

dmesg 명령어 사용 예시

dmesg 기본 사용법

다음은 dmesg 명령어를 기본으로 실행하여 전체 커널 로그를 출력하는 예시입니다.

user@linux:~$ dmesg
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 5.4.0-72-generic (buildd@lgw01-amd64) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)) #80-Ubuntu SMP Tue Apr 13 01:11:19 UTC 2021 (Ubuntu 5.4.0-72.80-generic 5.4.101)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.4.0-72-generic root=UUID=7d1fa109-f596-4b67-a8f1-5b35b6bf27a9 ro quiet splash
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
user@linux:~$

위의 결과는 시스템 부팅 과정에서 커널이 초기화한 정보들을 보여줍니다.

특정 키워드 필터링

grep과 함께 사용하여 커널 메시지에서 특정 키워드를 찾을 수 있습니다. 예를 들어, USB 장치와 관련된 메시지를 검색하려면 다음과 같이 명령어를 실행할 수 있습니다.

user@linux:~$ dmesg | grep usb
[    1.872000] usbcore: registered new interface driver usbfs
[    1.872004] usbcore: registered new interface driver hub
[    1.872008] usbcore: registered new device driver usb
[    1.872027] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.872035] ehci-pci: EHCI PCI platform driver
user@linux:~$

이 명령은 USB 관련 드라이버가 초기화된 로그를 출력합니다.

시간 정보 포함하여 출력

-T 옵션을 사용하면 커널 메시지에 시간 정보가 포함되어 언제 해당 메시지가 기록되었는지 확인할 수 있습니다.

user@linux:~$ dmesg -T
[Sat Oct  7 11:23:45 2023] Initializing cgroup subsys cpuset
[Sat Oct  7 11:23:45 2023] Initializing cgroup subsys cpu
[Sat Oct  7 11:23:45 2023] Initializing cgroup subsys cpuacct
[Sat Oct  7 11:23:45 2023] Linux version 5.4.0-72-generic (buildd@lgw01-amd64) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)) #80-Ubuntu SMP Tue Apr 13 01:11:19 UTC 2021 (Ubuntu 5.4.0-72.80-generic 5.4.101)
user@linux:~$

이 명령을 통해 각 커널 로그 메시지가 기록된 정확한 시간을 알 수 있습니다.

로그 레벨별 필터링

dmesg 명령어는 특정 로그 레벨의 메시지만 출력할 수 있습니다. 예를 들어, 오류 메시지만 보고 싶을 때는 --level=err 옵션을 사용할 수 있습니다.

user@linux:~$ dmesg --level=err
[    2.569837] ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PCI0.SATA], AE_NOT_FOUND (20200326/dswload2-162)
[    2.569840] ACPI Error: AE_NOT_FOUND, During name lookup/catalog (20200326/psobject-220)
user@linux:~$

이 명령어는 커널에서 발생한 오류만을 출력합니다.

dmesg 명령어 요약

dmesg는 커널에서 발생하는 모든 메시지를 기록하고, 이 메시지를 조회하여 시스템 상태를 점검할 수 있습니다. 하드웨어 문제나 시스템 부팅 시의 문제를 해결할 때 매우 유용한 도구입니다. 옵션을 사용하여 시간 정보특정 로그 레벨을 필터링하여 원하는 정보를 쉽게 확인할 수 있습니다.

참고사이트:

반응형