dmesg 출력의 변경 사항을 보는 방법은 무엇입니까?

dmesg 출력의 변경 사항을 보는 방법은 무엇입니까?

오류 메시지를 인쇄하는 장치 드라이버를 작성 중입니다.링 버퍼dmesg 출력. dmesg변경되면 출력을 보고 싶습니다 .

어떻게 해야 하나요?

답변1

비교적 새로운 dmesg버전팔로우 옵션 제공( -w, --follow)도 비슷하게 작동합니다 tail -f.

따라서 다음 명령을 사용하십시오.

$ dmesg -wH

( -H, --human색상, 상대 시간 등 사용자 친화적인 기능 제공)

이러한 옵션은 Fedora 19에서 사용할 수 있습니다.

답변2

watch이러한 유형의 작업을 위해 특별히 설계된 명령을 사용할 수 있습니다.

watch -n 0.1 "dmesg | tail -n $((LINES-6))"

부품 $((LINES-6))이 터미널에 잘 맞아야 합니다.

답변3

실제로 출력을 직접 모니터링할 수는 없습니다 dmesg.

그러나 모듈은 dmesg의 링 버퍼에 직접 인쇄하지 않고 대신 커널 로깅 기능을 사용합니다(그러면 를 통해 표시됩니다 dmesg). 합리적인(예: 기본) 설정이 있는 경우 이러한 메시지가 로그 파일 syslog에도 나타날 가능성이 높습니다 .kern.log

그래서 당신은 이것을 할 수 있습니다 :

 tail -f /var/log/kern.log

답변4

임베디드 시스템을 사용하는 경우(예:바쁜 상자이는 이와 같은 시스템에서 일반적입니다.OpenWrt, 기능이 매우 제한되어 있으며 2-3개의 플래그만 지원합니다.

이벤트가 변경될 때 dmesg 출력을 화면에 지속적으로 인쇄하는 빠르고 더러운 방법을 원한다면 간단한 Bash 루프가 그 트릭을 수행할 것입니다. 이상적이지는 않지만 앞서 언급했듯이 BusyBox dmesg에는 많은 기능이 부족합니다. 명령줄에 다음을 입력하면 동일한 효과가 있는 것으로 나타났습니다.

$ while true; do dmesg -c ; sleep 1 ; done

Ctrl+를 사용하여 루프를 종료할 수 있습니다 C. sleep 1은 CPU를 불필요하게 소모하는 것을 멈추는 것이며, -c 플래그는 호출할 때마다 버퍼를 지워 매초마다 반복되는 출력이 표시되지 않도록 합니다.

관련 정보