利用可能なメモリをパーセントで表示したいです。私は利用可能なメモリではなく、使用されたメモリを表示していると確信しています。それとも私が間違っていますか?
mem=`free -m | awk 'NR ==2{printf $3,$2,$3*100/$2}'`
echo $mem
答え1
使用可能なメモリ量をパーセンテージで表示するには、列4(使用可能)を列2(合計)で割り、その結果に100を掛けます。
たとえば、
[user@localhost ~]$ free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }'
free: 97.32 %
使用された金額を表示するには、3列(使用済み)を2列(全体)に分割し、その結果に100を掛けます。
[user@localhost ~]$ free | awk '/^Mem/ { printf("Used: %.2f %\n", $3/$2 * 100.0) }'
Used: 2.75 %
%g を使用して、指定された有効桁数に丸めることができます。
たとえば、浮動小数点値ではなく整数のみが必要な場合は、指定された浮動小数点桁を0(ゼロ)に変更できます。最初の例では、%.2fは2つの浮動小数点値を表します。
以下は浮動小数点値 0 の例です。
[user@localhost ~]$ free | awk '/^Mem/ { printf("Used: %.0f %\n", $3/$2 * 100.0) }'
Used: 3 %
ここにも答えがあります。
https://stackoverflow.com/questions/10585978/linux-command-for-percentage-of-memory-that-is-free
答え2
この試み、
free | awk '/^Mem/ { a=(($3-$7)/$2 * 100); print a"% of Memory used" }'
3.43143% of Memory used
free | awk '/^Mem/ { a=(($4+$7)/$2 * 100); print a"% of Memory free" }'
96.5662% of Memory free
free | awk '/^Mem/ { a=(($7)/$2 * 100); print a"% of Memory cached" }'
80.4204% of Memory cached
注:値をクロスチェックしてください。glances