Linux komutunu kullanarak belleği nasıl kullanılır (RAM kullanılır)?


30

Linux komutlarını kullanarak yüzde olarak kullanılan belleği (RAM) almaya çalışıyorum. Cpanel'im belirli bir web sayfasında göstermem gereken Bellek Kullanılan'ı gösteriyor.

Forumlardan, doğru belleğin aşağıdakilerden bulunabileceğini öğrendim:

free -m

Sonuç:

-/+ buffers/cache:        492       1555

- / + buffers / cache: doğru bellek kullanımını içerir. Bu bilgiyi nasıl çözümleyeceğimi bilmiyorum veya yüzde olarak kullanılan belleği almak için farklı bir komut varsa.


3
Bu zaten burada cevaplandı! stackoverflow.com/questions/10585978/… örneğin: free | grep Mem | awk '{print $4/$2 * 100.0}'
szboardstretcher

@szboardstretcher Bunu beğendim:$ 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

Neye ihtiyacınız olduğunu bilmeden, hangi numarayı kullanmanız gerektiğini söylemek zordur. Bununla birlikte, çoğu durumda, bu sayıların herhangi biri çok saftır ve trend ve bağlam bilgisi gerektirir.
23'te eckes

Yanıtlar:


33

İşte ücretsiz örnek çıktı:

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

İlk sayı satırı ( Mem:) listeler

  • total bellek
  • used bellek
  • free bellek
  • kullanımı shared
  • kullanımı buffers
  • kullanım dosya sistemi önbellekleri ( cached)

Bu satırda used tamponlar ve önbellek bulunur ve bu ücretsiz etkiler. Bu sizin "gerçek" boş hafızanız değildir, çünkü sistem tahsis taleplerini yerine getirmek için gerekirse önbellek bırakacaktır.

Bir sonraki satır ( -/+ buffers/cache:) bize tampon veya önbellek yokmuşçasına gerçek ve boş belleği verir.

Son satır ( Swap), takas belleğinin kullanımını verir. Bu şeyleri fiziksel diske koymak mantıklı olamayacağından takas için önbellek veya önbellek yoktur.

Kullanılmış belleği (eksi tamponları ve önbellek) çıkarmak için aşağıdaki gibi bir komut kullanabilirsiniz:

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

Bu, üçüncü satırı kapar ve kullanılan / toplamı * 100'e böler.

Ve boş hafıza için:

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

1
"- / + tamponlar / önbellek: 5779440 18904464" doğru RAM kullanımı / sunucunun durumu mu?
codelogn

2
Kesinlikle konuşma, hayır, ama pratik olarak konuşma, evet. Gerçek bellek kullanımı 2. satırdır (kullanılan: 20746840) ancak bu bellek kullanımının bir kısmı, yalnızca sisteminizdeki yanıt sürelerini hızlandıran arabellek ve önbellektir. Üçüncü satır (kullanılan: 5779440) size programlar tarafından gerçekten kullanılan bellek miktarını verir ve programlarınızın ne kadar daha fazlasını tahsis edebileceğini belirleyen bu bellek şeklidir. Amacınız, programların gerçekte hangi programları kullandığını ve gerçekte neyi tahsis edebileceğinizi anlamında serbest / kullanılmış bellek elde etmekse, evet, satır 3 sizin için doğru mu?
casey

1
Not daha yeni sürümleri ile bu free, -/+ buffers/cachetamamen kasıtlı ihmal edilir ve gösterilen değer usedsütununda artık varsayılan olarak tamponlar ve önbellek dışlar. Buraya bakın: bugzilla.redhat.com/show_bug.cgi?id=1158828
jdgregson

10

Komuttaki bilgilerin nasıl ayrıştırılacağına değineceğim free. Yüzdeyi bulmak için diğer 2 cevapta önerildiği şekilde kullanabilirsiniz.

Bu açıkça burada açıklanmıştır . Sistemimde sahip olduklarımdan açıklamaya çalışacağım.

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

Şimdi, çeşitli sayıların gerçekte neyi temsil ettiğini görelim.

Satır 1

  • 7869 Makinem için mevcut belleği / fiziksel RAM'i gösterir.
  • 4402 Sistemim tarafından kullanılan belleği / RAM'i gösterir.
  • 3466 Total RAM’in ücretsiz olduğunu ve yeni işlemin çalışması için uygun olduğunu gösterir.
  • 0 Paylaşılan hafızayı gösterir. Bu sütun eski ve ücretsiz gelecek sürümlerinde kaldırılabilir.
  • 208 Linux'ta farklı uygulamalar tarafından arabelleğe alınan toplam RAM olduğunu gösterir.
  • 3497 Gelecekte kullanılmak üzere verilerin önbelleğe alınması için kullanılan toplam RAM sayısını gösterir.

Hat 2

-/+ buffers/cache:        696       7173

Line2'de elde edilen 696 ve 7173 değerleri nasıl hesaplanır?

Kullanılan toplam ( 4402 ) - Toplam arabellek RAM ( 208 ) - Önbellekleme için toplam RAM ( 3497 ) , sistemde kullanılan gerçek RAM'i oluşturmalıdır . İkinci satırda kullanılan gerçek RAM çıkışı olan 697'yi döndürür .

Şimdi Toplam Kullanılabilir ( 7869 ) - Güncel Kullanılan ( 696 size vermelidir) boş bellek olduğu 7173 da ikinci satırında çıktı olarak var olan bu durumda.


6

@Szboardstretcher tarafından belirtildiği gibi bir kopya olsa da , çözümlerden tercihim (asıl soruda), özellikle bir web sayfasına ayrıştırmak istediğinizden beri aşağıda.

$ 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}'

Çıktı:

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

4
FYI Bunu kullanarak aşağıdakileri used: 96.00%, buffers: 26.53%awk: (FILENAME=- FNR=4) fatal: division by zero attempted
alıyorum

Tam komut ne kullanılır? Centos'ta kontrol ettim.
Simply_Me,

Biçimlendirme için üzgünüm ama işte gidiyorsunuz$ 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
kellyfj

Awk (mawk) 'un bazı sürümlerinde, yazdırmak için yüzde işaretinin iki katına çıkarılması gerekir, aksi takdirde awk böyle bir hata verir: printf ("used:% .0f %%"), $ 3 / $ 2 * 100 hem mawk hem de gawk.
Jan Lalinský

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}' 

Değişim sayısından sonra yeni bir satır ekler


1

CentOS 7'ye kadar deneyebilirsiniz

cat /proc/meminfo 

Hafızanın gerçek kullanımını işlemlerle görmek.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.