GNU/Linux >> Belajar Linux >  >> Linux

Cara mengetahui penggunaan memori pengguna di linux

One-liner ini bekerja untuk saya di setidaknya empat sistem Linux yang berbeda dengan distro dan versi yang berbeda. Itu juga bekerja pada 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

Tentang implementasinya, tidak ada konstruksi loop shell di sini; ini menggunakan larik asosiatif di awk untuk melakukan pengelompokan &penjumlahan.

Berikut contoh keluaran dari salah satu server saya yang menjalankan MySQL, Tomcat, dan Apache berukuran layak. Angka dalam MB.

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

Peringatan:seperti kebanyakan solusi serupa, ini hanya mempertimbangkan set penduduk (RSS), sehingga tidak menghitung segmen memori bersama apa pun.

EDIT :Versi yang lebih mudah dibaca manusia.

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

Dan hasilnya:

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

Penggunaan memori per pengguna dalam persen menggunakan alat standar:

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

atau untuk lebih presisi:

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

Versi pertama hanya meringkas persentase memori untuk setiap proses seperti yang dilaporkan oleh ps . Versi kedua meringkas memori dalam byte dan menghitung persentase total setelahnya, sehingga menghasilkan presisi yang lebih tinggi.


Jika sistem Anda mendukung, coba instal dan gunakan smem:

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 

atau

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 

Di Ubuntu, smem dapat diinstal dengan mengetikkan

sudo apt install smem

Linux
  1. Cara menggunakan FIND di Linux

  2. Penggunaan Memori Linux

  3. Cara Memeriksa Penggunaan Memori di Server berbasis Linux

  1. Cara Menemukan Semua Pengguna Sudo Di Linux

  2. Bagaimana penggunaan memori dilaporkan di Linux?

  3. Bagaimana cara membatasi penggunaan memori berdasarkan aplikasi di linux?

  1. Cara menemukan file di Linux

  2. Bagaimana menemukan alamat IP di Kali Linux

  3. Cara Mendaftar Pengguna di Linux