dmesg 출력이 변경되면 어떻게 볼 수 있습니까? 버퍼 dmesg

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

어떻게해야합니까?



답변

상대적으로 최신 dmesg버전 은 다음과 같은 옵션 ( -w, --follow)을 제공합니다 tail -f.

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

$ dmesg -wH

( -H, --human색상과 같은 사용자 친화적 인 기능, 상대 시간을 가능)

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


답변

watch이와 같은 것들을 위해 만들어진 명령을 사용할 수 있습니다

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

$((LINES-6))부분은 터미널에 잘 맞게해야한다.


답변

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

그러나 모듈이 dmesg의 링 버퍼에 직접 인쇄되지 않고 대신 커널 로깅 기능을 사용하게 될 가능성이 높습니다 (에 의해 dmesg표시됨). 당신이 경우 syslog일부 제정신 (예를 들어 기본) 설정이 이러한 메시지는 가장 가능성도에 표시됩니다 kern.log로그 파일.

그래서 당신은 다음과 같은 것을 할 수 있습니다 :

 tail -f /var/log/kern.log

답변

dmesg커널의 로그 메시지를 얻는 데 사용 합니다.

커널 자체는 링 버퍼, 즉 메모리에 로그인합니다. 이제 모든 dmesg것은 그 링 버퍼의 내용을 출력하는 것입니다. 그렇게 dmesg -c하면 나중에 링 버퍼도 삭제됩니다.

따라서 작동하지 않는 것과 같은 while true; do dmesg -c; sleep 1; done것을 가질 수 있습니다 dmesg|tail. 그러나 이것은 링 버퍼를 삭제하므로 루트 파워가 필요합니다.

다른 방법은 /proc/kmsg링 버퍼를 볼 수있는 파일 입니다. 당신은 할 수 tail -f /proc/kmsg있지만 이것은 하나의 프로세스에만 허용되며 이것은 일반적으로 로깅 데몬입니다. -메시지를 읽고 읽을 수있는 실제 파일 (보통 / var / log)에 쓰는 것이 중요합니다. 모든 메시지를 단일 파일로 출력하거나 다른 부분을 다른 파일로 출력하도록 구성 할 수 있습니다. (그러나 구성은 시스템의 로깅 데몬에 따라 다릅니다.)

따라서 /var/log필요에 맞는 파일이 있는지 확인하고 로깅 데몬을 구성하십시오.


답변

임베디드 시스템을 사용하는 경우 OpenWRT와 같은 시스템에서 공통적 인 비지 박스는 기능이 매우 제한되어 있으며 2-3 개의 플래그 만 지원됩니다.

이벤트가 변경 될 때 화면에 dmesg 출력을 지속적으로 빠르고 더러운 방식으로 인쇄하려면 간단한 bash 루프가 제대로 작동합니다. 이상적이지는 않지만 BusyBox dmesg에 많은 기능이 없습니다. 커맨드 라인에 입력하면 다음과 같은 효과가 있습니다.

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

Ctrl-C를 사용하여 루프를 종료 할 수 있습니다. sleep 1은 불필요하게 CPU의 타격을 막는 것입니다.


답변

사용하는 시스템에서 다음을 수행 systemd할 수도 있습니다.

# journalctl -kf

답변

별도의 터미널에서 다음 두 명령을 사용하십시오.

  1. while true; do dmesg -c >> test.txt;sleep 1; done
  2. tail -f test.txt

비슷한 결과를 얻을 수 있습니다.