利用可能なメモリの変更をストリーミング

利用可能なメモリの変更をストリーミング

メモリ使用量の変化を確認するために、次のコマンドを考えました。

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コマンドの出力を監視することも便利です。

おすすめ記事