Linuxコマンドを使用して使用済みメモリ(使用済みRAM)を取得する方法は?


30

Linuxコマンドを使用して、使用メモリ(RAM)をパーセンテージで取得しようとしています。cpanelには、特定のWebページに表示する必要がある使用済みメモリが表示されます。

フォーラムから、次のことから正しいメモリが見つかることがわかりました。

free -m

結果:

-/+ buffers/cache:        492       1555

-/ + buffers / cache:正しいメモリ使用量が含まれています。この情報を解析する方法や、使用されているメモリをパーセンテージで取得する別のコマンドがあるかどうかはわかりません。


3
それはすでにここで答えられました! stackoverflow.com/questions/10585978/… 例: free | grep Mem | awk '{print $4/$2 * 100.0}'
szboardstretcher 14

@szboardstretcher私はこれが好きです:$ free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%"), $3/$2*100}'
Simply_Me 14

何が必要なのか分からずに、どの番号を使うべきかを伝えるのは難しいです。ただし、多くの場合、これらの数値はいずれも非常に単純であり、傾向とコンテキスト情報が必要です。
14

回答:


33

freeからの出力例は次のとおりです。

% free
             total       used       free     shared    buffers     cached
Mem:      24683904   20746840    3937064     254920    1072508   13894892
-/+ buffers/cache:    5779440   18904464
Swap:      4194236        136    4194100

数字の最初の行(Mem:)リスト

  • total 記憶
  • used 記憶
  • free 記憶
  • の使用法 shared
  • の使用法 buffers
  • 使用ファイルシステムキャッシュ(cached

この行used にはバッファとキャッシュが含まれており、これは無料で影響します。これは、割り当て要求を満たすために必要な場合にシステムがキャッシュをダンプするため、「真の」空きメモリではありません。

次の行(-/+ buffers/cache:)は、バッファまたはキャッシュがないかのように、実際に使用された空きメモリを示しています。

最後の行(Swap)は、スワップメモリ​​の使用状況を示しています。スワップ用のバッファやキャッシュはありません。これらを物理ディスクに置くのは意味がありません。

使用済みメモリ(マイナスバッファとキャッシュ)を出力するには、次のようなコマンドを使用できます。

% free | awk 'FNR == 3 {print $3/($3+$4)*100}'
23.8521

これは3行目を取得し、使用済み/合計* 100を分割します。

空きメモリの場合:

% free | awk 'FNR == 3 {print $4/($3+$4)*100}' 
76.0657

1
「-/ + buffers / cache:5779440 18904464」は、サーバーのRAM使用量/ステータスが正しいですか?
codelogn 14

2
厳密に言えば、そうではありませんが、実際にはそうです。実際のメモリ使用量は2行目(使用:20746840)ですが、そのメモリ使用量の一部は、システムの応答時間を短縮するためのバッファとキャッシュです。3行目(使用:5779440)は、プログラムで実際に使用されているメモリの量を示します。プログラムがどれだけ割り当てることができるかは、このメモリの数値によって決まります。あなたの目標が、実際にどのプログラムが使用していて、実際に割り当てることができるかという意味で空き/使用メモリを取得することである場合、はい、3行目はあなたにとって正しいです。
ケーシー14

1
の最新バージョンではfree-/+ buffers/cache意図的に完全に省略され、used列に表示される値はデフォルトでバッファとキャッシュを除外する。こちらをご覧ください:bugzilla.redhat.com/show_bug.cgi
id

10

freeコマンドに関する情報を解析する方法について言及します。割合を見つけるには、他の2つの回答で提案されているように使用できます。

これはここで明確に説明されます。私は自分のシステムにあるものから説明しようとします。

free -m
             total       used       free     shared    buffers     cached
Mem:          7869       4402       3466          0        208       3497
-/+ buffers/cache:        696       7173
Swap:         3999        216       3783

それでは、さまざまな数値が実際に何を表しているのか見てみましょう。

ライン1

  • 7869は、マシンで使用可能なメモリ/物理RAMを示します。
  • 4402は、システムで使用されるメモリ/ RAMを示します。
  • 3466は、新しいプロセスを実行するために使用可能なRAMの合計を示します。
  • 0は 共有メモリを示します。この列は廃止されており、将来の無料リリースで削除される可能性があります。
  • 208 は、Linuxの異なるアプリケーションによってバッファリングされたRAMの合計を示します。
  • 3497は、将来の目的のためにデータのキャッシュに使用される合計RAMを示します。

2行目

-/+ buffers/cache:        696       7173

Line2で取得した値696および7173の計算方法は?

使用済み合計4402)- 合計バッファーRAM208)- キャッシュ用の合計RAM3497)は、システムで実際に使用されているRAMを構成する必要があります。697を返します2行目の実際に使用されるRAM出力であるが。

これで、Total Available7869-Actual Used696)は、この場合7173である空きメモリ提供し、2行目の出力としても取得されます。


6

@szboardstretcherが指すように重複していますが、ソリューション(元の質問)からの私の好みは、特にWebページに解析したいので、以下のものです。

$ free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%"), $3/$2*100}'

出力:

used: 82.68%, buffers: 42.81%, swap: 1.27%

4
used: 96.00%, buffers: 26.53%awk: (FILENAME=- FNR=4) fatal: division by zero attempted
参考までに、

使用される完全なコマンドは何ですか?Centosで確認しました。
Simply_Me

フォーマットについては申し訳ありませんが、ここに行きます$ cat /etc/issue CentOS release 6.7 (Final) $ free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%"), $3/$2*100}' used: 12.91%, buffers: 96.24%awk: (FILENAME=- FNR=4) fatal: division by zero attempted $ free total used free shared buffers cached Mem: 15429704 1991416 13438288 164 151556 1259584 -/+ buffers/cache: 580276 14849428 Swap: 0 0 0
ケリーフィフ

awk(mawk)の一部のバージョンでは、パーセント記号を印刷するために二重にする必要があります。そうしないと、awkは次のようなエラーをスローします。printf( "used:%.0f %%")、$ 3 / $ 2 * 100 mawkとgawkの両方。
ハーンラリンスキー

2
free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%\n"), $3/$2*100}' 

スワップ番号の後に新しい行を追加します


1

CentOS 7までの場合

cat /proc/meminfo 

プロセスによるメモリの実際の使用量を確認します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.