Linux'ta İşlem Başına Bellek Kullanımı Nasıl Kontrol Edilir

How Check Memory Usage Per Process Linux



Bu günlerde, bir bilgisayar aynı anda birçok programı çalıştırabilir. CPU'ların çoklu görevleri yerine getirmek için birden fazla çekirdeği olduğundan, CPU tüm bu programları işlemede sorun yaşamaz.

Bu programların her biri bir veya daha fazla süreç olarak çalışır. Her işlem kendisine bir miktar RAM veya bellek ayırır. Sürecin doğru işlemesi için gereklidir. Bir işlem yeterli RAM veya bellek tahsis edemezse, işlem oluşturulamaz ve program başlatılamaz.







Bu nedenle, bilgisayarınızda yaptığınız temel görevlerden biri, her bir işlemin ne kadar bellek veya RAM (Rastgele Erişimli Bellek) kullandığını kontrol etmektir. Çünkü bilgisayarınızın RAM'i veya belleği sınırlıdır.



Bir programı çalıştırmak istediğiniz ve yeterli belleğiniz olmadığı için başarısız olduğu bir durum düşünün. Bazı işlemler şu anda ihtiyacınız olmayan çok fazla bellek kullanıyor olabilir. Önemli programlarınızı başlatabilmeniz için RAM veya belleği boşaltmak için bu işlemleri sonlandırabilir veya durdurabilirsiniz.



Bu yazıda, Linux makinenizde çalışan işlemlerin her birinin bellek kullanımını nasıl kontrol edeceğinizi göstereceğim. Bu makaledeki tüm gösteriler için Debian 9 Stretch kullanacağım. Ancak herhangi bir modern Linux dağıtımında çalışmalıdır. Başlayalım.





kullanabilirsiniz ps Linux'taki tüm işlemlerin bellek kullanımını kontrol etme komutu. Bu prosedürle ilgili bir sorun var. ps bir işlemin KB veya MB biçiminde ne kadar bellek kullandığını gerçekten göstermez, ancak yüzde olarak ne kadar bellek kullanıldığını gösterir.

Linux işletim sisteminizde çalışan tüm işlemlerin bellek kullanımını (yüzde olarak) aşağıdaki komutla kontrol edebilirsiniz:



$ps -veyapid, kullanıcı,%mem,emretmekbalta| çeşit -B -k3 -r

Görüldüğü gibi yüzde olarak bellek kullanımı olan tüm işlemler azalan sırada listelenmiştir (En çok belleği kullanan işlemler ilk sırada listelenmiştir).

pmap ile İşlemlerin Bellek Kullanımını Kontrol Etme:

Bir işlemin veya bir dizi işlemin belleğini insan tarafından okunabilir biçimde (KB veya kilobayt olarak) şu komutla kontrol edebilirsiniz: pmap emretmek. İhtiyacınız olan tek şey, bellek kullanımını kontrol etmek istediğiniz işlemlerin PID'sidir.

Diyelim ki PID 917 ile işlemin ne kadar bellek kullandığını kontrol etmek istiyorsunuz. Bunu yapmak için koşun pmap aşağıdaki gibi:

$sudopmap917

Gördüğünüz gibi, 917 işleminin kullandığı toplam bellek 516104 KB veya kilobayttır. PID 917 ile işlemi çalıştırmak için gereken kitaplıkların ve diğer dosyaların ne kadar bellek kullandığını da buradan görebilirsiniz.

Kitaplıkların veya diğer bağımlı dosyaların ne kadar bellek kullandığını umursamıyorsanız, çalıştırın. pmap aşağıdaki gibi:

$sudopmap917 | kuyruk -n 1

Gördüğünüz gibi sadece PID 917 ile işlemin kullandığı toplam hafıza ekrana yazdırılıyor.

İsterseniz, bunu daha fazla filtreleyebilirsiniz. awk ve yalnızca boyutu KB veya kilobayt olarak alın. Bunu yapmak için koşun pmap aşağıdaki gibi:

$sudopmap917 | kuyruk -n 1 | awk '/ [0-9] K / {yazdır $ 2}'

Gördüğünüz gibi, yalnızca KB veya kilobayt cinsinden bellek kullanımı yazdırılıyor.

Artık PID'lerini kullanarak birden çok işlem tarafından ne kadar bellek kullanıldığını da listeleyebilirsiniz. pmap aşağıdaki gibi:

$sudopmap917 531 | kavramakToplam

NOT: Burada 917 ve 531, işlem kimlikleri veya PID'lerdir. Bu şekilde istediğiniz kadar PID koyabilirsiniz.

Tüm İşlemlerin Bellek Kullanımını Kilobayt Olarak Listelemek için pmap Kullanımı:

Bu bölümde, Linux işletim sisteminizde çalışan tüm işlemlerin bellek kullanımını insan tarafından okunabilir biçimde (kilobayt veya KB) listelemek için kendi kabuk betiğinizi nasıl yazacağınızı göstereceğim.

İlk önce yeni bir dosya oluşturun sistem mevcut çalışma dizininizde aşağıdaki komutla:

$dokunmasistem

Şimdi dosyayı aşağıdaki komutla yürütülebilir hale getirin:

$chmod+x sistem

sistem çalışan tüm işlemleri gösterecek olan kabuk betiğidir. PID , SAHİP , HAFIZA (azalan sırada KB cinsinden) ve EMRETMEK . Hadi başlayalım.

sistem favori metin düzenleyicinizle komut dosyası kullanacağım Kate .

Şimdi, çalıştıracağım ilk komut bana PID , SAHİP ve EMRETMEK iki nokta üst üste (:) sembolü ile ayrılmış tüm çalışan işlemlerin ÇİĞ değişken. Ardından çıktıyı döngüye alın ve ekrana yazdırın.

Gördüğünüz gibi, doğru çıktıyı alıyorum.

Şimdi her satırı işleme, iki nokta üst üste ayrılmış bilgileri ayrı değişkenlerde saklama zamanı. 7, 8 ve 9. satırda yaptığım şey buydu.

Gördüğünüz gibi yazdırabilirim PID , SAHİP ve EMRETMEK şimdi kendi formatımda

Şimdi her bir PID'nin bellek kullanımını alma zamanı. 10. satır tam da bunu yapıyor.

Gördüğünüz gibi, her şey mükemmel çalışıyor. Artık her işlemin bellek kullanımını kilobayt (KB) olarak da yazdırabilirim.

Şimdi tek yapılması gereken çıktıyı güzel görünecek şekilde biçimlendirmek. Tablo biçimini tercih ederim. 5. satır, tablonun her sütununun başlığını yazdırır.

Sonunda yazdırdım PID , SAHİP , HAFIZA (KB cinsinden) ve EMRETMEK 14. satırı kullanarak her işlemin tablo biçiminde.

Gördüğünüz gibi, oldukça iyi çalışıyor. Yine de biraz sorun var, işlemler bellek kullanımına göre azalan düzende doğru şekilde sıralanmıyor.

Bunu düzeltmek için kaldırdım sıralama -bnr -k3 3. satırdan ve her şeyi bir kabuk işlevine sardı sysmon_main() . Daha sonra sıralama işini çeşit emretmek.

Son kabuk betiği şuna benzer:

Gördüğünüz gibi, harika çalışıyor.

Şimdi onu gibi bir yere taşıyabilirsiniz /usr/bin ve aşağıdaki gibi diğer komutlar gibi yürütün:

$sudo mv -vsistem/usr/NS

Yürütme sistem :

Bu makaleyi okuduğunuz için teşekkürler.