/procでmemfreeを取得して10進数に変換するより良い方法

/procでmemfreeを取得して10進数に変換するより良い方法

私は素晴らしいwmとbashetsを使用して利用可能なメモリを表示する小さなテキストウィジェットを作成しています。合計キロバイトをギガバイト(例:1.2)に変換したいと思います。これが私が思いついたものです...

mem_Kb=$(grep -i memfree /proc/meminfo | cut -d: -f2 | tr -d [kB] | sed "s/^[ \t]*// ; s/[ \t]*$//")

mem_Gig=$(echo "scale = 1 ; $mem_Kb / 1000000" | bc )

echo mem_Gig: $mem_Gig

より良い、きれいな方法は何ですか?

ベストアンサー1

ただ使用してくださいfree

$ free -h
             total       used       free     shared    buffers     cached
Mem:          7.8G       6.8G       1.0G         0B       166M       4.2G
-/+ buffers/cache:       2.5G       5.2G
Swap:         7.8G       548K       7.8G

したがって、あなたの場合は次のようになります。

$ mem_Gig=`free -h | awk '$2~/buf/{print $4}'`
$ echo $mem_Gig
5.2G

からman free

   -h, --human
          Show all output fields automatically scaled to
          shortest  three  digit  unit  and  display the
          units of print out.  Following units are used.

            B = bytes
            K = kilos
            M = megas
            G = gigas
            T = teras

          If unit is missing, and you have  petabyte  of
          RAM  or  swap,  the number is in terabytes and
          columns might not be aligned with header.

   --si   Use power of 1000 not 1024.

したがって、1024の代わりに1000を使用するには、次のようにします。

$ mem_Gig=`free -h --si | awk '$2~/buf/{print $4}'`
$ echo $mem_Gig
5.5G

おすすめ記事