SW/리눅스

Linux : Dmesg 명령어, 사용 방법, 예제

얇은생각 2022. 3. 24. 07:30
반응형

Linux 커널은 CPU, I/O 장치, 물리적 메모리 및 파일 시스템과 같은 시스템 리소스에 대한 액세스를 제어하는 운영 체제의 핵심입니다. 커널은 부팅 프로세스 중 및 시스템이 실행 중일 때 커널 링 버퍼에 다양한 메시지를 기록합니다. 이러한 메시지에는 시스템 작동에 대한 다양한 정보가 포함됩니다.

커널 링 버퍼는 커널의 로그 메시지를 보관하는 물리적 메모리의 일부입니다. 고정 크기를 가지므로 버퍼가 가득 차면 이전 로그 레코드를 덮어씁니다.

dmesg 명령줄 유틸리티는 Linux 및 기타 Unix 계열 운영 체제에서 커널 링 버퍼를 인쇄하고 제어하는 데 사용됩니다. 커널 부팅 메시지를 검사하고 하드웨어 관련 문제를 디버깅하는 데 유용합니다.

dmesg 명령의 기본 사항에 대해 설명합니다.

 

 

Linux : Dmesg 명령어, 사용 방법, 예제

 

 

dmesg 명령을 사용

dmesg 명령의 구문은 다음과 같습니다.

dmesg [OPTIONS]

 

 

옵션 없이 호출되면 dmesg는 커널 링 버퍼에서 표준 출력으로 모든 메시지를 기록합니다.

dmesg

 

 

기본적으로 모든 사용자는 dmesg 명령을 실행할 수 있습니다. 그러나 일부 시스템에서는 루트 사용자가 아닌 사용자의 경우 dmesg 액세스가 제한될 수 있습니다. 이 경우 dmesg를 호출하면 다음과 같은 오류 메시지가 표시됩니다.

# dmesg: read kernel buffer failed: Operation not permitted

 

 

커널 매개 변수 kernel.dmesg_restrict는 권한 없는 사용자가 dmesg를 사용하여 커널의 로그 버퍼에서 메시지를 볼 수 있는지 여부를 지정합니다. 제한을 제거하려면 0으로 설정합니다.

sudo sysctl -w kernel.dmesg_restrict=0

 

 

일반적으로 출력에는 많은 정보 라인이 포함되므로 출력의 마지막 부분만 볼 수 있습니다. 한 번에 한 페이지씩 보려면 출력을 호출기 유틸리티(예: 이하 또는 그 이상)에 연결합니다.

dmesg --color=always | less

 

 

--color=는 항상 컬러 출력을 보존하는 데 사용됩니다. 

버퍼 메시지를 필터링하려면 grep를 사용하십시오. 예를 들어 USB 관련 메시지만 보려면 다음을 입력합니다.

dmesg | grep -i usb

 

 

dmesg는 /mesg/kmsg 가상 파일에서 커널에 의해 생성된 메시지를 읽습니다. 이 파일은 커널 링 버퍼에 대한 인터페이스를 제공하며 한 프로세스에서만 열 수 있습니다. 시스템에서 syslog 프로세스가 실행 중이고 cat 이하를 사용하여 파일을 읽으려고 하면 명령이 중단됩니다. 

syslog 데몬은 커널 메시지를 /var/log/dmesg에 덤프하므로 다음과 같은 로그 파일도 사용할 수 있습니다.

cat /var/log/dmesg

 

 

dmesg 출력을 형성

dmesg 명령은 출력을 포맷하고 필터링하는 데 도움이 되는 여러 옵션을 제공합니다.

dmesg의 가장 많이 사용되는 옵션 중 하나는 -H(-human)로, 사람이 읽을 수 있는 출력을 가능하게 합니다. 이 옵션은 명령 출력을 호출기에 연결합니다.

dmesg -H

 

 

사람이 읽을 수 있는 타임스탬프를 인쇄하려면 -T(--ctime) 옵션을 사용합니다.

dmesg -T

# [Mon Oct 14 14:38:04 2019] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready

 

 

타임스탬프 형식은 ctime, reltime, 델타, notime 또는 iso인 --time 형식 <format> 옵션을 사용하여 설정할 수도 있습니다. 예를 들어 델타 형식을 사용하려면 다음을 입력합니다.

dmesg --time-format=delta

 

 

두 개 이상의 옵션을 결합할 수도 있습니다.

dmesg -H -T

 

 

dmesg 명령의 출력을 실시간으로 보려면 -w(--follow) 옵션을 사용하십시오.

dmesg --follow

 

 

dmesg 출력을 필터링

dmesg 출력을 지정된 시설 및 수준으로 제한할 수 있습니다. 

기능은 메시지를 만든 프로세스를 나타냅니다. dmesg는 다음과 같은 로그 기능을 지원합니다.

kern - 커널 메시지입니다.

user - 사용자 수준 메시지입니다.

mail - 메일 시스템입니다.

deamon - 시스템 데몬입니다.

auth - 보안/인증 메시지입니다.

syslog - 내부 syslogd 메시지입니다.

lpr - 라인 프린터 하위 시스템

news - 네트워크 뉴스 하위 시스템입니다.

 

-f(--설비 <목록>) 옵션을 사용하면 출력을 특정 설비로 제한할 수 있습니다. 이 옵션은 쉼표로 구분된 기능을 하나 이상 사용할 수 있습니다.

예를 들어 사용할 커널 및 시스템 데몬 메시지만 표시하려면 다음을 수행합니다.

dmesg -f kern,daemon

 

 

각 로그 메시지는 메시지의 중요성을 보여주는 로그 수준과 연결됩니다. dmesg는 다음 로그 수준을 지원합니다.

 emrg - 시스템을 사용할 수 없습니다.

alert - 즉시 조치를 취해야 합니다.

crit - 위급한 상황입니다.

err - 오류 조건입니다.

warn - 경고 조건입니다.

notice - 정상이지만 유의한 상태입니다.

info - 정보입니다.

debug - 디버그 수준 메시지입니다.

 

-l(--수준 <list>) 옵션은 출력을 정의된 수준으로 제한합니다. 이 옵션은 쉼표로 구분된 하나 이상의 레벨을 사용할 수 있습니다.

 다음 명령은 오류와 중요한 메시지만 표시합니다. 

dmesg -l err,crit

 

 

 

링 버퍼를 지우기

-C(--클리어) 옵션을 사용하여 링 버퍼를 지울 수 있습니다.

sudo dmesg -C

 

 

루트 또는 sudo 권한이 있는 사용자만 버퍼를 지울 수 있습니다.

지우기 전에 버퍼 내용을 인쇄하려면 -c(--읽기 지우기) 옵션을 사용합니다.

sudo dmesg -c

 

 

현재 dmesg 로그를 삭제하기 전에 파일에 저장하려면 출력을 파일로 리디렉션하십시오.

dmesg > dmesg_messages

 

 

dmesg 명령을 사용하면 커널 링 버퍼를 보고 제어할 수 있습니다. 커널 또는 하드웨어 문제를 해결할 때 매우 유용할 수 있습니다.

사용 가능한 모든 dmesg 옵션에 대한 정보를 보려면 단말기에 man dmesg를 입력하십시오.

반응형