답변:
상대적으로 최신 dmesg버전 은 다음과 같은 옵션 ( -w, --follow)을 제공합니다 tail -f.
따라서 다음 명령을 사용하십시오.
$ dmesg -wH
( -H, --human색상과 같은 사용자 친화적 인 기능, 상대 시간을 가능)
이러한 옵션은 예를 들어 Fedora 19에서 사용할 수 있습니다.
-H않았지만 다른 방식으로 발견되었습니다.
-wUtopic (14.10)부터 모든 버전의 Ubuntu에서 작동합니다. ( launchpad.net/ubuntu/+source/util-linux/+publishinghistory는 초기 Utopic 패키지는 2.20에 대한 있었지만, 출시 된 시점에서 2.25에 도달 제안합니다.)
watch이와 같은 것들을 위해 만들어진 명령을 사용할 수 있습니다
watch -n 0.1 "dmesg | tail -n $((LINES-6))"
$((LINES-6))부분은 터미널에 잘 맞게해야한다.
watch. 따라서 호출 사이에 실제로 변경되지는 않습니다 dmesg. 터미널 상태를 쿼리하는 래퍼를 사용해야합니다.
watch하므로 watch는 변수 표현식을 사용하여 명령을 실행합니다.이 표현식은 호출하는 쉘에 의해 확장됩니다. 매번. 시도해보십시오.
watch합니다 popen(). 즉, 다른 쉘이 생성되고 환경 변수가 제공됩니다 (따라서 모든 실행 실행마다 업데이트 됨). 좋은 발견.
실제로 dmesg직접 출력을 모니터링 할 수는 없습니다 .
그러나 모듈이 dmesg의 링 버퍼에 직접 인쇄되지 않고 대신 커널 로깅 기능을 사용하게 될 가능성이 높습니다 (에 의해 dmesg표시됨). 당신이 경우 syslog일부 제정신 (예를 들어 기본) 설정이 이러한 메시지는 가장 가능성도에 표시됩니다 kern.log로그 파일.
그래서 당신은 다음과 같은 것을 할 수 있습니다 :
tail -f /var/log/kern.log
/var/log/kern.log상당히 리눅스에 따라 다릅니다. OpenBSD (및 기타)의 경우 dmesg 항목은 / var / log / messages에 기록됩니다. 물론 다른 것들도 있습니다.
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
별도의 터미널에서 다음 두 명령을 사용하십시오.
while true; do dmesg -c >> test.txt;sleep 1; donetail -f test.txt비슷한 결과를 얻을 수 있습니다.