Часто возникает необходимость посмотреть суммарное потребление памяти группой однотипных процессов (кумулятивно). top и ps без обработки не сильно помогает, поэтому сегодня написал следующий скрипт:
Затем при помощи awk собираем кумулятивные данные в массив ( memory[$2]+=$4; ). Тут думаю все понятно.
Последним штрихом является сортировка кумулятивных значений и их отображение. К сожалению asort, встроенный в gawk,выдавал что-то неудобоваримое, пришлось написать простую сортировку самостоятельно. Пока массив memory содержит элементы, пробегаем мессив memory, ищем максимальный элемент, печатаем его, удаляем максимальный элемент ( delete memory[max_index]; ). Каждую итерацию, массив memory уменьшается на один элемент.
p.s. Можно добавить еще распознавание и группировку таких процессов rpciod/1 и rpciod/2
p.p.s. Можно попробовать добавить обновление по времени like top, и ограничить число выводимых процессов (например 20ю).
Скрипт просмотра объема памяти, потребляемого процессами в linux
Часто возникает необходимость посмотреть суммарное потребление памяти группой однотипных процессов (кумулятивно). top и ps без обработки не сильно помогает, поэтому сегодня написал следующий скрипт:
Собственно скрипт
Несколько комментариев:
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Результат работы скрипта:
Боле короткая форма записи для скрипта (без сортировки, но в одну строку):
Have fun ))
p.s. Можно добавить еще распознавание и группировку таких процессов rpciod/1 и rpciod/2
p.p.s. Можно попробовать добавить обновление по времени like top, и ограничить число выводимых процессов (например 20ю).