Мои сайты
- hudson играет как я играю на pc, xbox360 и других платформах
- фото-hudson мой фотоальбом, мои фото-эксперименты
Друзья
Популярные таги
ajax apache bird's eye view bromine centos cubic test doctrine facebook flash flex hints howto internet explorer java javascript jquery linux memcached monitoring munin mysql nginx patch php propel redhat ruby ruby on rails selenium selenium grid svn symfony symfony advent calendar'09 symfony deploy checklist tools web разработка Мои сайты автоматизация тестирования голдрат мысли практикум теория ограничений тестирование чтиво юморАрхив блога
Скрипт просмотра объема памяти, потребляемого процессами в linux
Часто возникает необходимость посмотреть суммарное потребление памяти группой однотипных процессов (кумулятивно). top и ps без обработки не сильно помогает, поэтому сегодня написал следующий скрипт:
Собственно скрипт
#!/bin/bash ps -eo pid,comm,user,%mem | awk ' \ { \ memory[$2]+=$4; \ } \ END \ { \ print( "--== Cumulative memory usage TOP: ==--" ); \ print( "--------------------------------------" ); \ print( "%MEM \t| COMM" ); \ print( "--------------------------------------" ); \ while( length(memory) > 0 ) \ { \ max = -1; \ for( i in memory ) \ { \ if( memory[i]>max ) \ { \ max_index = i; \ max = memory[max_index]; \ } \ } \ delete memory[max_index]; \ print( max, "\t| ", max_index ); \ } \ }' | lessНесколько комментариев:
PID COMMAND USER %MEM 1 init root 0.0 2 migration/0 root 0.0 3 ksoftirqd/0 root 0.0 4 watchdog/0 root 0.0 5 migration/1 root 0.0 6 ksoftirqd/1 root 0.0Результат работы скрипта:
Боле короткая форма записи для скрипта (без сортировки, но в одну строку):
# ps -eo pid,comm,user,%mem | awk '{memory[$2]+=$4} END{ print( "%MEM \t| COMM" ); for( proc in memory ) print( memory[proc], "\t| ", proc ); }' | lessHave fun ))
p.s. Можно добавить еще распознавание и группировку таких процессов rpciod/1 и rpciod/2
p.p.s. Можно попробовать добавить обновление по времени like top, и ограничить число выводимых процессов (например 20ю).