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

다음과 같은 임베디드 시스템을 사용하는 경우BusyBox이는 다음과 같은 시스템에서 일반적입니다.OpenWrt, 기능이 매우 제한되어 있으며 2-3개의 플래그만 지원됩니다.

이벤트가 변경될 때 지속적으로 화면에 dmesg 출력을 인쇄하는 빠르고 지저분한 방법을 원한다면 간단한 Bash 루프가 잘 작동합니다. 이상적이지는 않지만 앞서 언급했듯이 BusyBox dmesg에는 많은 기능이 없습니다. 다음을 명령줄에 입력하면 동일한 효과가 나타납니다.

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

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

관련 정보