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)--総バッファRAM(208)--キャッシュに使用される総RAM(3497) は次のように構成されます.実際に使用されたメモリシステムから。それは私に返されます第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}'