Cara melihat penggunaan memori ringkasan dari kelompok perintah (alih-alih proses)
10
Apakah ada cara untuk mengelompokkan proses serupa saat menggunakan alat seperti top / htop? Terkadang saya hanya ingin tahu apa yang memakan memori saya dan beberapa program (kebanyakan browser) menggunakan banyak proses, yang membuatnya sulit untuk membaca berapa banyak RAM yang benar-benar mereka gunakan.
Sejauh ini saya hanya muncul dengan sesuatu seperti itu:
ps ax -o pmem,cmd | grep opera | grep -oE '^[ ]*[0-9.]+' | paste -sd+ - | bc
Anda dapat menggunakan ps -Chanya menampilkan informasi proses untuk nama perintah tertentu.
misalnya
ps -C opera
Anda kemudian dapat menggunakan psopsi lain untuk mengekstrak hanya data yang Anda cari. Secara khusus, hatau --no-headersuntuk menekan tajuk kolom, dan -o pmemuntuk menunjukkan persentase memori yang digunakan oleh proses.
ps -C opera --no-headers -o pmem
Itu akan memberi Anda banyak persentase penggunaan memori, satu per baris.
Ada banyak metode untuk menjumlahkan data seperti itu, salah satu metode yang sering saya gunakan adalah menyalurkannya ke xargs untuk mengubahnya menjadi satu baris dengan elemen yang dibatasi oleh spasi, kemudian ke sed untuk mengkonversi spasi menjadi +simbol, dan kemudian ke dalam bcmelakukan perhitungan. Metode perpipaan Anda menjadi paste -sd+karya juga atau bisa dibilang lebih baik daripada | xargs | sed.
Menyatukan semua itu, Anda mendapatkan:
ps -C opera --no-headers -o pmem | xargs | sed -e 's/ /+/g' | bc
atau
ps -C opera --no-headers -o pmem | paste -sd+ | bc
Dengan kata lain, Anda dapat menggunakan ps -Calih-alih beberapa greps jika Anda hanya menginginkan data tentang satu program yang sedang berjalan.
CATATAN: Anda dapat menggunakan beberapa -Copsi pada baris perintah yang sama jika Anda ingin info tentang lebih dari satu program sekaligus. misalnya
Yay, orang pertama yang benar-benar mengerti / membaca pertanyaanku!
korda
Satu-satunya masalah yang saya lihat dengan pendekatan ini adalah bahwa beberapa program memiliki perintah yang sama namun saya tidak ingin mengelompokkan mereka (misalnya java ... dan karena saya pengembang java, saya biasanya memiliki setidaknya beberapa program java yang berjalan). Saya kira tidak ada solusi yang sempurna ...
korda
selalu ada ps h -C java -o pmem,args | awk '/foo/ {print $1}' | ...misalnya untuk mencari program java yang disebut foo.
Saya sudah mencoba membuatnya bekerja dan itu tidak memberi saya hasil yang menarik. Sebagai contoh hanya menampilkan satu program, dan itu bukan yang mengambil sebagian besar memori
korda
Apakah itu? Anda ingin beberapa hal seperti top ?? jika ya maka Anda dapat memodifikasi skrip dengan penundaan 2 atau 1 detik dan menjalankan hal yang sama dalam beberapa saat atau untuk. Bagi saya itu menunjukkan Aplikasi penggunaan Memori tertinggi pada saat saya menjalankan Skrip ini. hal-hal seperti apa yang Anda coba, jalankan saja: ps af -o pmem, cmd | sort -r Ini akan memberi Anda aplikasi penggunaan mem tertinggi
RahulAN
Itu tidak bekerja untuk saya. Saya kira alasannya adalah semacam itu termasuk ruang putih terkemuka
korda
Anda berarti Anda tidak mendapatkan nama proses yang benar ??
RahulAN
Ya, karena ps menambahkan spasi ke hal-hal indentasi. Ketika satu proses memiliki penggunaan 2 digit, nilai penggunaan satu digit akan diindentasi dan akan dimulai dengan spasi terdepan. Saya kira menambahkan sesuatu seperti sed -e 's/^[[:space:]]*//'harus memperbaikinya. Apakah skrip Anda menambahkan penggunaan memori dari proses dengan perintah yang sama?
korda
0
Dari atas Anda dapat menggunakan yang berikut ini:
Press SHIFT+f
Press the Letter corresponding to %MEM
Press ENTER
Perhatikan, bahwa saat ini tidak diunggah ke PyPI , dan juga hanya dapat diinstal di seluruh sistem ( setup.pyagak rusak), seperti sudo pip install https://github.com/tobimensch/termsql/archive/master.zip.
ps h -C java -o pmem,args | awk '/foo/ {print $1}' | ...
misalnya untuk mencari program java yang disebut foo.Anda dapat membuat skrip shell
Ini akan memberikan Aplikasi penggunaan mem tertinggi.
sumber
sed -e 's/^[[:space:]]*//'
harus memperbaikinya. Apakah skrip Anda menambahkan penggunaan memori dari proses dengan perintah yang sama?Dari atas Anda dapat menggunakan yang berikut ini:
Anda mungkin juga mencoba:
Perintah ini akan memberikan 5 proses teratas oleh penggunaan memori.
Saya harap Anda menemukan info ini bermanfaat!
sumber
Ini dapat disederhanakan dengan termsql .
Perhatikan, bahwa saat ini tidak diunggah ke PyPI , dan juga hanya dapat diinstal di seluruh sistem (
setup.py
agak rusak), sepertisudo pip install https://github.com/tobimensch/termsql/archive/master.zip
.sumber