Script atau perintah untuk mendapatkan konsumsi memori pengguna

Host saya menawarkan RAM dalam jumlah terbatas untuk situs web saya dan saya ingin memantau konsumsi memori dengan menjalankan skrip di cron.

Saya telah membuat perintah ini:

ps -u xxxxxx -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}'

Namun cara host saya menghitung memori memiliki kekhasan. Ini mengabaikan proses yang berjalan kurang dari 5 menit.

Apakah Anda mengetahui perintah atau skrip Python yang dapat menunjukkan kepada saya total memori yang digunakan dengan mengabaikan proses yang berumur pendek?


person Vallieres    schedule 13.09.2011    source sumber


Jawaban (1)


Gunakan etime untuk menemukan waktu yang telah berlalu dari suatu proses. Anda kemudian dapat mengubah perintah awk untuk memeriksa apakah waktu ini lebih dari 5 menit.

ps -u xxxxxx -o rss,etime,command | ...

Format waktu yang telah berlalu adalah [[dd-]hh:]mm:ss. Artinya waktunya bisa jadi 00:30, 12:57:39 atau bahkan 4-08:27:12. Anda dapat menggunakan awk untuk mengurai format waktu ini dan mengubahnya menjadi detik. Sekali dalam hitungan detik, periksa apakah lebih dari 5 menit, dan jika demikian tambahkan ke total rss yang berjalan.

Berikut ini contoh skrip yang melakukan hal ini:

ps -u xxxxxx -o rss,etime,command | grep -v peruser | grep -v RSS | sed 's/^ *//g' | awk '{
 split($2,arr,":") #split time on :
 len=0
 for(i in arr) len++ 
 secs=arr[len]+60*arr[len-1] #convert to seconds
 if(len>2) secs=secs+substr(arr[len-2],length(arr[len-2])-1)*60*60

 if(secs>5*60) { #check if more than 5 minutes
     print $0 #print out the process
     sum+=$1 
 }
} END{print "SUM:"sum/1024}'
person dogbane    schedule 13.09.2011
comment
Saya benar-benar payah dalam perintah unix :( Bisakah Anda memberi tahu saya cara memodifikasi perintah awk saya dan memfilter proses dengan waktu 5 menit atau kurang? Terima kasih! - person Vallieres; 15.09.2011
comment
Sial, saya tidak mendapat notifikasi jawaban Anda. Saya akan segera menguji skrip Anda dan memposting hasilnya besok. Terima kasih dogbane! - person Vallieres; 23.09.2011