コマンドの出力で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)
レコード/行をフィルタリングして次に始まるレコード/行を見つけ、Mem
3番目のフィールド/列()が印刷され、フィルタリングされたレコードを表示します。$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}'