오류 메시지를 인쇄하는 장치 드라이버를 작성 중입니다.링 버퍼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 플래그는 호출할 때마다 버퍼를 지워 매초마다 반복되는 출력이 표시되지 않도록 합니다.