メモリ使用量の変化を確認するために、次のコマンドを考えました。
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
コマンドの出力を監視することも便利です。