2016-10-20 4 views
0

答えをLinux command for percentage of memory that is freeに拡張するにはどうすればいいですか?次の1G境界まで切り上げて合計メモリを取得できますか?そう7.4/2 = 3 + = 4メイク1、総Memの= 7.4G以来、4であることを|例えば、次の1G境界まで切り上げた総メモリの半分を計算するにはどうすればよいですか?

# free -h 
       total  used  free  shared buff/cache available 
Mem:   7.4G  2.0G  3.0G  150M  2.4G  5.0G 
Swap:   0B   0B   0B 

は、私は "awkの{...}自由-h" の値が欲しいですセンス?

答えて

3

、あなたが必要とする:

free -h | awk 'NR==2{print(int(substr($2,1,length($2)-1)/2+.5))}' 

は説明:

二行目を印刷するには、

を必要とします

free -h | awk 'NR==2{print}' 
は、あなたが最初の文字で始まり、文字列内のできるだけ多くの文字を含むストリングを必要とし、あなたが

free -h | awk 'NR==2{print($2)}' # prints 7.7G 

が最終Gを削除する必要があり、二行目の2番目のフィールドを印刷し、マイナス1には、 。

free -h | awk 'NR==2{print(substr($2,1,length($2)-1))}' # prints 7.7 

それの半分を取得するには、あなたがラウンドに

free -h | awk 'NR==2{print(substr($2,1,length($2)-1)/2)}' # prints 3.85 

が必要最も近い整数、あなたは

free -h | awk 'NR==2{print(int(substr($2,1,length($2)-1)/2+.5))}' # prints 4 
+0

これは私の場合には完全に機能しました。すべてが本当に "G"になっています。ありがとう。 –

0

はこれを試してみてください:

Gのすべてを想定すると
awk '$1=="MemTotal:"{t=$2}END{printf("%.0f GB\n", t/2/1024/1024)}' /proc/meminfo 
+1

int機能によって行われている)0.5を追加し、小数部分を切り捨てる必要がありますが、それは/ 1024/2/1024 tはされていませんか? 1GB = 1024000KBですか?思いもよらない。 (ハードディスクメーカーがこのようなことをすることもあるが、私たちはRAMについて語っている) – user31264

+0

これはちょうど "8"ではなく "8 GB"を出力した。 printステートメントでGBを削除してもうまくいきました。 –

関連する問題