Komut gruplarının (işlemler yerine) özet bellek kullanımını görüntüleme


10

Top / htop gibi araçları kullanırken benzer işlemleri gruplamanın bir yolu var mı? Bazen hafızamın ne yediğini bilmek istiyorum ve bazı programlar (çoğunlukla tarayıcılar) çoklu işlemler kullanıyor, bu da gerçekten ne kadar RAM kullandıklarını okumayı zorlaştırıyor.

Şimdiye kadar sadece böyle bir şey buldum:

ps ax -o pmem,cmd | grep opera | grep -oE '^[ ]*[0-9.]+' | paste -sd+ - | bc

Yanıtlar:


7

ps -CYalnızca belirli bir komut adı için işlem bilgilerini görüntülemek için kullanabilirsiniz .

Örneğin

ps -C opera

Ardından, psyalnızca aradığınız verileri ayıklamak için diğer seçenekleri kullanabilirsiniz . Özellikle hveya --no-headerssütun başlıklarını bastırmak -o pmemve işlem tarafından kullanılan bellek yüzdesini göstermek.

ps -C opera --no-headers -o pmem

Bu, her satıra bir tane olmak üzere bir grup bellek kullanım yüzdesi verecektir.

Böyle verileri toplayarak için çok sayıda yöntem vardır, ben sık kullandığınız yöntemlerden birine dönüştürmek boşluklar sed içine, sonra boşluklarla ayrılmış unsurları ile bir satır dönüştürmek için Xargs içine boru bunun için +semboller ve sonra içine bcgerçekleştirmek için hesaplama. Borulama yönteminiz de paste -sd+işe yarıyor veya tartışmasız daha iyi | xargs | sed.

Hepsini bir araya getirmek, elde edersiniz:

ps -C opera --no-headers -o pmem | xargs | sed -e 's/ /+/g' | bc

veya

ps -C opera --no-headers -o pmem | paste -sd+ | bc

Başka bir deyişle, ps -Cyalnızca belirli bir çalışan program hakkında veri istiyorsanız çoklu açmalar yerine kullanabilirsiniz .

NOT: Bir seferde birden -Cfazla program hakkında bilgi istiyorsanız, aynı komut satırında birden çok seçenek kullanabilirsiniz . Örneğin

ps -C iceweasel -C chromium -C opera

Yay, sorumu gerçekten anlayan / okuyan ilk kişi!
korda

Bu yaklaşımla gördüğüm tek sorun, bazı programların aynı komuta sahip olması ve henüz onları gruplandırmak istemememdir (örneğin java ... ve java geliştiricisi olduğum için genellikle en az birkaç java programı çalıştırıyorum). Mükemmel bir çözüm yok sanırım ...
korda

her zaman ps h -C java -o pmem,args | awk '/foo/ {print $1}' | ...örneğin foo adında bir java programı aramak için.
cas

0

Kabuk betiği oluşturabilirsiniz

#!/bin/bash
Total=`cat /proc/meminfo | head -n1 | awk '{print $2}'`
max_usage=`ps ax -o pmem,fname | sort -r | head -n2 | tail -n1 | awk '{print $1}'`
name=`ps ax -o pmem,fname | sort -r | head -n2 | tail -n1 | awk '{print $NF}'`
echo "$Total $max_usage $name"
echo "($max_usage*$Total)/(100*1024)" | bc

Bu uygulama en yüksek mem kullanımı verecektir.


Bu işe yaramaya çalıştım ve bana ilginç sonuçlar vermedi. Örneğin, sadece bir program gösterir ve hafızanın çoğunu alan program değildir
korda

Bu mu? Peki üst gibi bir şey ister misin ?? evet ise, komut dosyasını 2 veya 1 saniyelik bir gecikmeyle değiştirebilir ve aynı şeyi bir süre veya için çalıştırabilirsiniz. Benim için bu Script çalıştırdığınızda en yüksek Bellek kullanımı Uygulaması gösterir. ne tür şeyler deniyorsun, sadece koş: ps af -o pmem, cmd | sort -r Size en yüksek mem kullanım uygulaması verecektir
RahulAN

Benim için çalışmıyor. Sanırım nedeni bu tür önde gelen beyaz boşluk içerir
korda

İşlem adının doğru bir şekilde elde edilmediğini mi söylüyorsunuz ??
RahulAN

Evet, çünkü ps girintilere boşluklar ekler. Bir işlemin 2 basamaklı kullanımı olduğunda, bir basamaklı kullanım değerleri girintili olacak ve önde gelen alanla başlayacaktır. Sanırım sed -e 's/^[[:space:]]*//'düzeltmek gibi bir şey eklemek . Ayrıca betiğiniz aynı komutla işlemlerin bellek kullanımını ekler mi?
korda

0

İçeriden aşağıdakileri kullanabilirsiniz:

Press SHIFT+f
Press the Letter corresponding to %MEM
Press ENTER

Ayrıca deneyebilirsiniz:

ps -eo pmem,pcpu,vsize,pid,cmd | sort -k 1 -nr | head -5

Bu komut, bellek kullanımına göre ilk 5 işlemi verecektir.

Umarım bu bilgiyi faydalı bulursun!


0

Bu, termsql ile basitleştirilebilir .

ps -C chromium-browser -o pmem | termsql -1 "SELECT SUM([%MEM]) FROM tbl"

Şu anda PyPI'ye yüklenmediğini ve aynı zamanda sadece sistem çapında ( setup.pybiraz kırık) kurulabileceğini unutmayın sudo pip install https://github.com/tobimensch/termsql/archive/master.zip.

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.