Linux에서 dmesg 명령을 사용하는 방법

dmesg 명령을 사용하면 Linux 시작 프로세스의 숨겨진 세계를 볼 수 있습니다. “fault finder’s friend”와 함께 커널의 자체 링 버퍼에서 하드웨어 장치 및 드라이버 메시지를 검토하고 모니터링합니다.

Linux의 링 버퍼 작동 방식

Linux 및 Unix 계열 컴퓨터에서 부팅 및 시작은 컴퓨터의 전원을 켤 때 발생하는 이벤트 시퀀스의 두 가지 별개의 단계입니다.

부팅 프로세스(바이오스 또는 UEFI, MBR, 그리고 애벌레) 커널이 메모리에 로드되고 초기 램디스크에 연결된 지점까지 시스템 초기화를 수행합니다(initrd 또는 initramfs), 그리고 시스템 시작됩니다.

그런 다음 시작 프로세스가 배턴을 선택하고 운영 체제 초기화를 완료합니다. 초기화 초기 단계에서 다음과 같은 로깅 데몬이 시스템 로그 또는 rsyslogd 아직 실행 중이 아닙니다. 이 초기화 단계에서 주목할 만한 오류 메시지와 경고를 잃지 않기 위해 커널에는 다음이 포함되어 있습니다. 링 버퍼 메시지 저장소로 사용합니다.

링 버퍼는 메시지용으로 예약된 메모리 공간입니다. 디자인이 간단하고 크기가 고정되어 있습니다. 가득 차면 최신 메시지가 가장 오래된 메시지를 덮어씁니다. 개념적으로 “라고 생각할 수 있습니다.원형 버퍼.”

커널 링 버퍼는 장치 드라이버의 초기화 메시지, 하드웨어의 메시지, 커널 모듈의 메시지와 같은 정보를 저장합니다. 여기에는 낮은 수준의 시작 메시지가 포함되어 있으므로 링 버퍼는 하드웨어 오류 또는 기타 시작 문제에 대한 조사를 시작하기에 좋은 위치입니다.

그러나 빈손으로 가지 마십시오. dmesg를 가지고 가십시오.

dmesg 명령

dmesg 명령을 사용하면 링 버퍼에 저장된 메시지 검토. 기본적으로 dmesg를 사용하려면 sudo를 사용해야 합니다.

sudo dmesg

링 버퍼의 모든 메시지는 터미널 창에 표시됩니다.

그것은 대홍수였습니다. 분명히, 우리가 해야 할 일은 더 적은 것을 통해 파이프하는 것입니다:

sudo dmesg | less

이제 관심 항목을 찾는 메시지를 스크롤할 수 있습니다.

  Sims 4 Mods 폴더에서 깨진 모드를 삭제하는 방법

less 내에서 검색 기능을 사용하여 관심 있는 항목과 용어를 찾아 강조 표시할 수 있습니다. less에서 슬래시 키 “/”를 눌러 검색 기능을 시작하십시오.

sudo의 필요성 제거

dmesg를 사용할 때마다 sudo를 사용하지 않으려면 이 명령을 사용할 수 있습니다. 그러나 주의하십시오. 사용자 계정이 있는 사람은 누구나 sudo를 사용하지 않고도 dmesg를 사용할 수 있습니다.

sudo sysctl -w kernel.dmesg_restrict=0

강제 컬러 출력

기본적으로 dmesg는 컬러 출력을 생성하도록 구성됩니다. 그렇지 않은 경우 -L(색상) 옵션을 사용하여 출력에 색상을 지정하도록 dmesg에 지시할 수 있습니다.

sudo dmesg -L

dmesg가 항상 기본 색상으로 표시되도록 하려면 다음 명령을 사용하십시오.

sudo dmesg --color=always

휴먼 타임스탬프

기본적으로 dmesg는 초의 타임스탬프 표기법을 사용하고 나노초 커널이 시작된 이후로. 이것을 보다 인간 친화적인 형식으로 렌더링하려면 -H(인간) 옵션을 사용하십시오.

sudo dmesg -H

이로 인해 두 가지 일이 발생합니다.

출력은 자동으로 더 작게 표시됩니다.
타임스탬프는 날짜와 시간이 포함된 타임스탬프를 분 단위로 표시합니다. 각 분에 발생한 메시지는 해당 분의 시작부터 초 및 나노초로 레이블이 지정됩니다.

사람이 읽을 수 있는 타임스탬프

나노초 정확도가 필요하지 않지만 기본값보다 읽기 쉬운 타임스탬프를 원하는 경우 -T(사람이 읽을 수 있음) 옵션을 사용합니다. (조금 혼란스럽습니다. -H는 “사람이 읽을 수 있는” 옵션이고 -T는 “사람이 읽을 수 있는” 옵션입니다.)

sudo dmesg -T

타임스탬프는 표준 날짜 및 시간으로 렌더링되지만 해상도는 1분으로 낮아집니다.

1분 이내에 일어난 모든 일은 동일한 타임스탬프를 갖습니다. 당신이 신경쓰이는 모든 것이 일련의 사건이라면 이것으로 충분합니다. 또한 명령 프롬프트에서 다시 덤프된다는 점에 유의하십시오. 이 옵션은 자동으로 덜 호출하지 않습니다.

라이브 이벤트 보기

커널 링 버퍼에 도착한 메시지를 보려면 –follow(메시지 대기) 옵션을 사용하십시오. 그 문장이 조금 이상하게 보일 수 있습니다. 링 버퍼가 시작 시퀀스 동안 발생하는 이벤트의 메시지를 저장하는 데 사용되는 경우 컴퓨터가 가동되어 실행 중일 때 라이브 메시지가 링 버퍼에 어떻게 도착할 수 있습니까?

컴퓨터에 연결된 하드웨어를 변경하는 모든 원인은 메시지가 커널 링 버퍼로 보내지게 합니다. 커널 모듈을 업데이트하거나 추가하면 해당 변경 사항에 대한 링 버퍼 메시지가 표시됩니다. USB 드라이브를 연결하거나 Bluetooth 장치를 연결 또는 연결 해제하면 dmesg 출력에 메시지가 표시됩니다. 가상 하드웨어도 링 버퍼에 새 메시지가 표시되도록 합니다. 가상 머신을 실행하면 링 버퍼에 새로운 정보가 도착하는 것을 볼 수 있습니다.

sudo dmesg --follow

명령 프롬프트로 돌아가지 않습니다. 새 메시지가 나타나면 터미널 창 하단에 dmesg에 의해 표시됩니다.

  당신의 안드로이드 폰에서 맥북 터치바를 얻는 방법

CD-ROM 디스크의 내용을 디렉터리 트리에 접목했기 때문에 CD-ROM 디스크를 마운트하는 것조차 변경으로 간주됩니다.

실시간 피드를 종료하려면 Ctrl+C를 누르십시오.

마지막 10개의 메시지 검색

꼬리 명령 사용 마지막 10개를 검색하기 위해 커널 링 버퍼 메시지. 물론 원하는 수의 메시지를 검색할 수 있습니다. 10은 우리의 예일 뿐입니다.

sudo dmesg | last -10

마지막 10개의 메시지가 검색되어 터미널 창에 나열됩니다.

특정 용어 검색

grep을 통해 dmesg의 출력 파이프 특정 문자열이나 패턴을 검색하려면. 여기서 -i(대소문자 무시) 옵션을 사용하여 일치하는 문자열의 대소문자를 무시합니다. 결과에는 “usb” 및 “USB” 및 소문자와 대문자의 기타 조합이 포함됩니다.

sudo dmesg | grep -i usb

강조 표시된 검색 결과는 대문자와 소문자입니다.

첫 번째 참조를 포함하는 메시지를 분리할 수 있습니다. SCSI 시스템 sda의 하드 디스크. (사실 sda는 요즘에도 최초의 SATA 하드 드라이브, USB 드라이브용)

sudo dmesg | grep -i sda

sda를 언급하는 모든 메시지가 검색되어 터미널 창에 나열됩니다.

grep이 한 번에 여러 용어를 검색하도록 하려면 -E(정규 표현식 확장) 옵션을 사용하십시오. “|” 파이프를 사용하여 인용된 문자열 안에 검색어를 제공해야 합니다. 검색어 사이의 구분 기호:

sudo dmesg | grep -E "memory|tty|dma"

sudo dmesg |  그렙 -E

검색어를 언급하는 모든 메시지는 터미널 창에 나열됩니다.

sudo dmesg의 출력 |  그렙 -E

로그 수준 사용

커널 링 버퍼에 기록된 모든 메시지에는 레벨이 첨부되어 있습니다. 레벨은 메시지에 있는 정보의 중요도를 나타냅니다. 수준은 다음과 같습니다.

비상: 시스템을 사용할 수 없습니다.
경고: 즉시 조치를 취해야 합니다.
crit: 치명적인 조건.
err: 오류 조건입니다.
경고: 경고 조건입니다.
주의: 정상적이지만 중요한 상태입니다.
정보: 정보 제공.
디버그: 디버그 수준 메시지입니다.

-l(레벨) 옵션을 사용하고 레벨 이름을 명령줄 매개변수로 전달하여 dmesg가 특정 레벨과 일치하는 메시지를 추출하도록 할 수 있습니다. “정보” 수준 메시지만 보려면 다음 명령을 사용하십시오.

sudo dmesg -l info

나열된 모든 메시지는 정보 메시지입니다. 여기에는 오류나 경고가 포함되지 않고 유용한 알림만 포함됩니다.

  스마트 온도 조절 장치가 용광로를 망칠 수 있습니까?

하나의 명령에서 둘 이상의 로그 수준을 결합하여 여러 로그 수준의 메시지를 검색합니다.

sudo dmesg -l debug,notice

dmesg의 출력은 각 로그 수준의 메시지를 혼합한 것입니다.

시설 카테고리

dmesg 메시지는 “시설”이라는 범주로 그룹화됩니다. 시설 목록은 다음과 같습니다.

kern: 커널 메시지.
사용자: 사용자 수준 메시지입니다.
메일: 메일 시스템.
데몬: 시스템 데몬.
auth: 보안/인증 메시지.
syslog: 내부 syslogd 메시지.
lpr: 라인 프린터 하위 시스템.
뉴스: 네트워크 뉴스 하위 시스템.

특정 기능의 메시지만 표시하도록 출력을 필터링하도록 dmesg에 요청할 수 있습니다. 그렇게 하려면 -f(시설) 옵션을 사용해야 합니다.

sudo dmesg -f daemon

dmesg는 터미널 창의 데몬과 관련된 모든 메시지를 나열합니다.

레벨에서 했던 것처럼 dmesg에 한 번에 둘 이상의 시설에서 메시지를 나열하도록 요청할 수 있습니다.

sudo dmesg -f syslog, daemon

출력은 syslog 및 데몬 로그 메시지가 혼합된 것입니다.

시설과 레벨의 결합

-x(디코드) 옵션은 dmesg가 기능과 수준을 사람이 읽을 수 있는 각 줄에 접두사로 표시하도록 합니다.

sudo dmesg -x

시설과 레벨은 각 라인의 시작 부분에서 볼 수 있습니다.

첫 번째 강조 표시된 섹션은 “알림” 수준의 “커널” 기능에서 보내는 메시지입니다. 두 번째로 강조 표시된 섹션은 “정보” 수준의 “커널” 기능에서 온 메시지입니다.

좋은데 왜?

간단히 말해서 결함 찾기.

하드웨어가 인식되지 않거나 제대로 작동하지 않는 문제가 있는 경우 dmesg에서 문제에 대해 설명할 수 있습니다.

dmesg를 사용하여 가장 높은 수준에서 낮은 수준까지 메시지를 검토하고 하드웨어 항목을 언급하거나 문제와 관련이 있을 수 있는 오류 또는 경고를 찾습니다.
dmesg를 사용하여 적절한 시설에 대한 언급을 검색하여 유용한 정보가 포함되어 있는지 확인합니다.
grep을 통해 dmesg를 파이프하고 제품 제조업체 또는 모델 번호와 같은 관련 문자열 또는 식별자를 찾습니다.
grep을 통해 dmesg를 파이프하고 “gpu” 또는 “storage”와 같은 일반 용어 또는 “failure”, “failed” 또는 “unable”과 같은 용어를 찾습니다.
–follow 옵션을 사용하고 실시간으로 dmesg 메시지를 봅니다.

즐거운 사냥.