Memperoleh penggunaan memori melalui ps sangat tidak bisa diandalkan. Jika Anda memiliki kernel yang lebih baru, ia harus mendukung / proc / pid # / smaps yang memberi Anda beberapa informasi terperinci tentang setiap proses penggunaan memori. Di bawah ini adalah script yang cukup kotor dan cepat untuk mengulangi setiap proses yang terbuka dan ambil Ukuran, Rss, Pss dan penggunaan Shared Clean / Dirty. Semoga ini bisa bermanfaat dalam beberapa cara.
#!/bin/bash
for pid in $(ps -ef | awk '{print $2}'); do
if [ -f /proc/$pid/smaps ]; then
echo "* Mem usage for PID $pid"
echo "-- Size:"
cat /proc/$pid/smaps | grep -m 1 -e ^Size: | awk '{print $2}'
echo "-- Rss:"
cat /proc/$pid/smaps | grep -m 1 -e ^Rss: | awk '{print $2}'
echo "-- Pss:"
cat /proc/$pid/smaps | grep -m 1 -e ^Pss: | awk '{print $2}'
echo "Shared Clean"
cat /proc/$pid/smaps | grep -m 1 -e '^Shared_Clean:' | awk '{print $2}'
echo "Shared Dirty"
cat /proc/$pid/smaps | grep -m 1 -e '^Shared Dirty:' | awk '{print $2}'
fi
done
ps ef -o command,vsize,rss,%mem,size
Saya tidak dapat menemukan opsi untuk memori bersama, tetapi saya menemukan opsi untuk% dari total memori fisik dan jumlah ruang swap yang akan diperlukan untuk menukar proses. Ini dan banyak lagi yang didokumentasikan di halaman manual untuk ps.
sumber
top
,,ps
dan program serupa semuanya dipengaruhi oleh ini dengan cara yang sama.Jawaban @ user26528 tidak cukup menghitung memori dengan benar - Anda perlu jumlah pemetaan dalam pukulan, bukan hanya yang teratas. Script ini harus melakukannya:
sumber
Daftar proses dengan penggunaan memori
sumber
ps -e -orss=,pid=,args= | sort -b -k1,1n
untuk memasukkan id prosesps
dapat mengurutkan sendiri:ps -eo rss=,args= --sort +rss
Anda dapat gunakan
sumber
Daftar proses dengan penggunaan mem
perintah: ps -e -orss =, args = | sort -b -k1,1n | pr -TW $ KOLOM \
sumber
Memperbarui:
One-liner berikut ini juga menyediakan informasi tentang total konsumsi memori oleh pengguna saat ini.
Saya baru saja mencantumkan semua proses pengguna yang diurutkan berdasarkan penggunaan memori tertinggi di MB seperti ini:
Anda bisa menggunakan
command=
alih-alihcomm=
menunjukkan proses path lengkap.The
=
hanya menghilangkan judul kolom.sumber
Saya menemukan bahwa berkali-kali proses yang sama memiliki sub proses garpu dan Anda tertarik pada total memori yang digunakan oleh proses. misal, google chrome memulai beberapa proses dan Anda ingin mengetahui jumlah memori yang diambil oleh chrome. Saya menemukan di bawah satu perintah baris ini sangat berguna
Ini menangani banyak hal, seperti menampilkan memori dalam MB, mengurutkan memori dan terutama mengelompokkan berdasarkan perintah. Ini juga mengelompokkan% CPU dan% memori. Itu menunjukkan data dalam format yang ramah pengguna.
Perintah ini terinspirasi dari jawaban ini dan itu membantu saya banyak untuk mendapatkan ide tentang proses mana yang mengambil sumber daya saya.
sumber