사용 가능한 메모리의 변경 사항 스트리밍

사용 가능한 메모리의 변경 사항 스트리밍

메모리 사용량의 변화를 확인하기 위해 다음 명령을 생각해냈습니다.

free -s 1 -h | awk 'NR%4==2'

다음과 같은 출력이 표시됩니다.

Mem:           125G         32G         82G        404M         10G         91G     
Mem:           125G         32G         82G        404M         10G         91G     
Mem:           125G         32G         82G        404M         10G         92G     

나는 정말로 메모리 사용량의 변화에만 관심이 있으므로 파이핑을 시도했습니다 uniq.

free -s 1 -h | awk 'NR%4==2' | uniq

그러나 이것을 사용하면 전혀 출력이 제공되지 않습니다. 입력이 완료되기를 기다리고 있다고 가정 uniq하지만 물론 결코 완료되지 않습니다.

저는 RedHat 7.6을 사용하고 있습니다.

답변1

이 예는 다음에서 유래합니다.man stdbuf당신이 찾고있는 것. 이는 스트림을 uniq이와 같은 것으로 파이프하려는 일반적인 경우에 작동합니다 . 그 이유는 uniq현재 줄을 인쇄할지 여부를 결정하기 위해 더 많은 줄을 조사해야 하기 때문입니다.

EXAMPLES
       tail -f access.log | stdbuf -oL cut -d ' ' -f1 | uniq
       This will immediately display unique entries from access.log

귀하의 경우:

free -s1 -h | stdbuf -oL awk 'NR%4==2' | uniq

awk또 다른 방법은 방금 인쇄한 줄을 저장하고 인쇄하기 전에 값을 테스트하는 명령을 사용하는 것입니다 .

free -s1 -h | awk 'NR%4 == 2 {if ($0 != p) print; p = $0}'

또한 watch명령의 출력을 모니터링하는 것도 유용할 수 있습니다.

관련 정보