GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So ermitteln Sie die Benutzerspeichernutzung in Linux

Dieser Einzeiler hat für mich auf mindestens vier verschiedenen Linux-Systemen mit unterschiedlichen Distributionen und Versionen funktioniert. Es funktionierte auch unter FreeBSD 10.

ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" "int(a[i]/1024+0.5);}' | sort -rnk2

Zur Implementierung gibt es hier keine Shell-Loop-Konstrukte; dies verwendet ein assoziatives Array in awk um die Gruppierung und Summierung durchzuführen.

Hier ist eine Beispielausgabe von einem meiner Server, auf dem MySQL, Tomcat und Apache von angemessener Größe ausgeführt werden. Die Zahlen sind in MB.

mysql 1566
joshua 1186                                                                                  
tomcat 353                                                                                   
root 28                                                                                      
wwwrun 12                                                                                    
vbox 1                                                                                       
messagebus 1                                                                                 
avahi 1                                                                                      
statd 0                                                                                      
nagios 0

Vorbehalt:Wie die meisten ähnlichen Lösungen berücksichtigt dies nur den residenten Satz (RSS), sodass keine Shared-Memory-Segmente gezählt werden.

BEARBEITEN :Eine besser lesbare Version.

echo "USER                 RSS      PROCS" ; echo "-------------------- -------- -----" ; ps hax -o rss,user | awk '{rss[$2]+=$1;procs[$2]+=1;}END{for(user in rss) printf "%-20s %8.0f %5.0f\n", user, rss[user]/1024, procs[user];}' | sort -rnk2

Und die Ausgabe:

USER                 RSS      PROCS
-------------------- -------- -----
mysql                    1521     1
joshua                   1120    28
tomcat                    379     1
root                       19   107
wwwrun                     10    10
vbox                        1     3
statd                       1     1
nagios                      1     1
messagebus                  1     1
avahi                       1     1

Speichernutzung pro Benutzer in Prozent mit Standardtools:

for _user in $(ps haux | awk '{print $1}' | sort -u)
do
    ps haux | awk -v user=${_user} '$1 ~ user { sum += $4} END { print user, sum; }'            
done

oder für mehr Präzision:

TOTAL=$(free | awk '/Mem:/ { print $2 }')
for _user in $(ps haux | awk '{print $1}' | sort -u)
do
    ps hux -U ${_user} | awk -v user=${_user} -v total=$TOTAL '{ sum += $6 } END { printf "%s %.2f\n", user, sum / total * 100; }'
done

Die erste Version summiert nur den Speicherprozentsatz für jeden Prozess, wie von ps gemeldet . Die zweite Version summiert stattdessen den Speicher in Bytes und berechnet anschließend den Gesamtprozentsatz, was zu einer höheren Genauigkeit führt.


Wenn Ihr System dies unterstützt, versuchen Sie, smem zu installieren und zu verwenden:

smem -u

User     Count     Swap      USS      PSS      RSS 
gdm          1        0      308      323      820 
nobody       1        0      912      932     2240 
root        76        0   969016  1010829  1347768 

oder

smem -u -t -k

User     Count     Swap      USS      PSS      RSS 
gdm          1        0   308.0K   323.0K   820.0K 
nobody       1        0   892.0K   912.0K     2.2M 
root        76        0   937.6M   978.5M     1.3G 
ameskaas    46        0     1.2G     1.2G     1.5G 
           124        0     2.1G     2.2G     2.8G 

In Ubuntu kann smem durch Eingabe von

installiert werden
sudo apt install smem

Linux
  1. So verwenden Sie FIND unter Linux

  2. Linux-Speichernutzung

  3. So überprüfen Sie die Speichernutzung in einem Linux-basierten Server

  4. Wie wird die Speichernutzung in Linux gemeldet?

  5. Wie kann die Speichernutzung nach Anwendung in Linux begrenzt werden?

So finden Sie die IP-Adresse unter Linux

So finden Sie den Hostnamen unter Linux

So finden Sie heraus, zu welchen Gruppen ein Benutzer in Linux gehört

So finden Sie die am häufigsten ausgeführten Prozesse nach Speichernutzung

So ändern Sie den Benutzer unter Linux

So finden Sie die am häufigsten ausgeführten Prozesse nach Speicher- und CPU-Auslastung in Linux