Linuxコマンドを使用して使用されたメモリ(使用されたRAM)を取得するには?

Linuxコマンドを使用して使用されたメモリ(使用されたRAM)を取得するには?

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

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

free -m

結果:

-/+ buffers/cache:        492       1555

-/+バッファ/キャッシュ:正しいメモリ使用量が含まれています。この情報を解析する方法や、使用されているメモリの割合を取得する他のコマンドがあるかどうかわかりません。

答え1

無料サンプル出力は次のとおりです。

% 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

答え2

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) は次のように構成されます.実際に使用されたメモリシステムから。それは私に返されます第697話どれ実際に使用されたメモリ出力は2行目にあります。

今、合計利用可能7869)--実際の使用696)はあなたに与えられるべきです空きメモリこれは7173この場合、2行目にも出力されます。

答え3

たとえコピー@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

3.3以降にはfree行がないため、-/+ buffers/cache:以前の回答は機能しません。 3.3では、free「Mem」行で使用されているものと使用可能なものを比較しました。次の内容は、以前のバージョンと新しいバージョンの両方に適用されますfree

free |  awk '$1 == "Mem:" {x= $7/($3+$7)*100} $2 == "buffers/cache:" {x= $4/($3+$4)*100} $1 == "Swap:" {print x}'  

関連情報