free -mコマンドで使用されている個々のメモリ情報を取得します。

free -mコマンドで使用されている個々のメモリ情報を取得します。

コマンドの出力でfree -m次のようになります。

             total       used       free     shared    buffers     cached
Mem:          2496       2260        236          0          5        438
-/+ buffers/cache:       1816        680
Swap:         1949         68       1881

使用されているメモリ(2260など)のみを出力にインポートしたいと思います。次のコマンドを試しました。

free -m | grep Mem | cut -f1 -d " " 

私の指揮能力を向上させるのに役立ちます。

35%という割合をどのように求めることができますか?

答え1

awk以下を使用するために別のパイプは必要ありませんgrep

awk '/^Mem/ {print $3}' <(free -m)

レコード/行をフィルタリングして次に始まるレコード/行を見つけ、Mem3番目のフィールド/列()が印刷され、フィルタリングされたレコードを表示します。$3

答え2

またはsedを使用してください:

free -m | sed -n 's/^Mem:\s\+[0-9]\+\s\+\([0-9]\+\)\s.\+/\1/p'

別の解決策は次のとおりです。

free -m  | grep ^Mem | tr -s ' ' | cut -d ' ' -f 3

2番目のソリューションのクレジットは次のとおりです。郵便はがき

答え3

パーセントで表示される追加の質問は、(jasonwryanの回答に基づいて)次のようになります。

awk '/^Mem/ {printf("%u%%", 100*$3/$2);}' <(free -m)

3番目のフィールドを2番目のフィールドに分割してパーセンテージを取得し、整数で印刷します(丸めないでください)。

編集する:ダブル「%」printf(印刷用に最初にエスケープされたリテラル文字)を追加しました。

答え4

FNR =2出力の2行目で、使用された3列{print $3}目を印刷します。

free -m | awk 'FNR == 2 {print $3}'

関連情報