메모리 사용량의 변화를 확인하기 위해 다음 명령을 생각해냈습니다.
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
명령의 출력을 모니터링하는 것도 유용할 수 있습니다.