답변:
상대적으로 최신 dmesg
버전 은 다음과 같은 옵션 ( -w
, --follow
)을 제공합니다 tail -f
.
따라서 다음 명령을 사용하십시오.
$ dmesg -wH
( -H
, --human
색상과 같은 사용자 친화적 인 기능, 상대 시간을 가능)
이러한 옵션은 예를 들어 Fedora 19에서 사용할 수 있습니다.
-H
않았지만 다른 방식으로 발견되었습니다.
-w
Utopic (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; done
tail -f test.txt
비슷한 결과를 얻을 수 있습니다.