dmesg는 Linux 커널 메시지 버퍼에 저장된 메시지를 확인할 수 있는 명령어입니다. 시스템 부팅 시나 하드웨어 상태 변화, 드라이버의 로드/언로드와 같은 커널 이벤트가 발생할 때, 커널은 이러한 메시지를 기록합니다. 이러한 로그는 시스템 진단이나 문제 해결에 매우 유용하며, 하드웨어 관련 오류 또는 부팅 과정에서 발생한 문제를 파악하는 데 자주 사용됩니다.
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는 커널에서 발생하는 모든 메시지를 기록하고, 이 메시지를 조회하여 시스템 상태를 점검할 수 있습니다. 하드웨어 문제나 시스템 부팅 시의 문제를 해결할 때 매우 유용한 도구입니다. 옵션을 사용하여 시간 정보나 특정 로그 레벨을 필터링하여 원하는 정보를 쉽게 확인할 수 있습니다.
참고사이트:
'Linux' 카테고리의 다른 글
[리눅스] sed 명령어 완벽 가이드 사용법(파일 내 문자열 변환) (1) | 2024.10.13 |
---|---|
[리눅스] who 명령어 완벽 가이드 사용법(현재 로그인한 사용자 확인) (0) | 2024.10.12 |
[리눅스] uptime 명령어 완벽 가이드 사용법(시스템 가동 시간) (0) | 2024.10.12 |
[리눅스] last 명령어 완벽 가이드 사용법(로그인 로그 확인) (0) | 2024.10.12 |
[리눅스] rsync 명령어 완벽 가이드 사용법(동기화) (0) | 2024.10.12 |
[리눅스] scp 명령어 완벽 가이드 사용법(파일 전송) (0) | 2024.10.12 |
[리눅스] traceroute 명령어 완벽 가이드 사용법(IP 도메인 추적) (1) | 2024.10.11 |
[리눅스] nslookup 명령어 완벽 가이드 사용법(DNS 조회) (5) | 2024.10.08 |