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

Jawaban:


7

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

ps -C iceweasel -C chromium -C opera

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.
cas

0

Anda dapat membuat skrip shell

#!/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

Ini akan memberikan Aplikasi penggunaan mem tertinggi.


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

Anda mungkin juga mencoba:

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

Perintah ini akan memberikan 5 proses teratas oleh penggunaan memori.

Saya harap Anda menemukan info ini bermanfaat!


0

Ini dapat disederhanakan dengan termsql .

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

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.