メモリ使用量を得るためのパッド

メモリ使用量を得るためのパッド

スワップやキャッシュなど、システムで使用可能な合計メモリ量を知らせる1行を作成したいと思います。

free -tオプションではないため、フリー列の下の値を合計する必要があります。

この値を取得する方法がわかりません。を使用している場合は、awk別の行から別の数字を参照する方法(たとえば、他の行の空きスワップ領域はMem)?$3$4

答え1

今私の前にある Debian には次の行がfree -t表示されますTotal:

             total       used       free     shared    buffers     cached
Mem:       8197980    2583348    5614632          0     222508    1904352
-/+ buffers/cache:     456488    7741492
Swap:      7807584          0    7807584
Total:    16005564    2550180   13455384

行のみが必要な場合は、tailおよびを使用してawk値を取得できます。

ただし、freeこの行が表示されない場合は、次のようにawkを使用できますRS=""

free | awk -v RS="" '{print $10 "+" $17 "+" $21}' | bc

列レイアウトがfree私と異なる場合は、フィールド番号を調整する必要があります。

説明: このRSフィールドはレコード区切り記号です。""自由出力のすべてのラインを接続して、1つのラインにあるかのawkように参照できるようにするには、これを設定します。

最初から計算すると、$1to$6は列ヘッダー、$7toは行Mem:ヘッダー、$8to$10はその行の値なので、$10使用可能なメモリ値です。これは、次の値に対して同様の方法で行われます。

             total       used       free     shared    buffers     cached
Mem:            $8         $9        $10        $11        $12        $13
-/+ buffers/cache:        $16        $17
Swap:          $19        $20        $21

awkコマンドは{print $10 "+" $17 "+" $21}デフォルトで値+の間にシンボルを連結し、出力をパイプしてbc合計を計算します。

答え2

たぶんこれが代替かもしれません。free

cat /proc/meminfo | grep -e MemFree -e Buffers -e SwapFree | gawk 'BEGIN{s=0}{s+=$2}END{print s}'

答え3

free実行してから出力を解析できますか?

free | awk '{print $4}' | tail -3 | sed '2d' |paste -sd+ | bc

関連情報