Получение использования памяти через PS довольно ненадежно. Если у вас более новое ядро, оно должно поддерживать / proc / pid # / smaps, который дает вам некоторую подробную информацию об использовании памяти каждым процессом. Ниже приведен довольно грязный и быстрый скрипт для циклического прохождения всех открытых процессов и получения значений «Размер», «Rss», «Pss» и «Shared Clean / Dirty». Надеюсь, это может быть полезно каким-то образом.
#!/bin/bash
for pid in $(ps -ef | awk '{print $2}'); do
if [ -f /proc/$pid/smaps ]; then
echo "* Mem usage for PID $pid"
echo "-- Size:"
cat /proc/$pid/smaps | grep -m 1 -e ^Size: | awk '{print $2}'
echo "-- Rss:"
cat /proc/$pid/smaps | grep -m 1 -e ^Rss: | awk '{print $2}'
echo "-- Pss:"
cat /proc/$pid/smaps | grep -m 1 -e ^Pss: | awk '{print $2}'
echo "Shared Clean"
cat /proc/$pid/smaps | grep -m 1 -e '^Shared_Clean:' | awk '{print $2}'
echo "Shared Dirty"
cat /proc/$pid/smaps | grep -m 1 -e '^Shared Dirty:' | awk '{print $2}'
fi
done
ps ef -o command,vsize,rss,%mem,size
Я не мог найти опцию для общей памяти, но я нашел опции для% от общей физической памяти и объема пространства подкачки, которое понадобилось бы для выгрузки процесса. Это и многое другое описано в справочной странице для PS.
источник
top
,ps
И подобные программы , все зависит от этого таким же образом.Ответ @ user26528 не совсем правильно вычисляет память - вам нужна сумма отображений в smaps, а не только верхняя. Этот скрипт должен сделать это:
источник
Список процессов по использованию памяти
источник
ps -e -orss=,pid=,args= | sort -b -k1,1n
для включения идентификатора процессаps
можно сортировать самостоятельно:ps -eo rss=,args= --sort +rss
вы можете использовать
источник
Список процессов по использованию mem
команда: ps -e -orss =, args = | сортировка -b -k1,1n | pr -TW $ COLUMNS \
источник
Обновить:
Следующая строка содержит также информацию об общем потреблении памяти текущим пользователем.
Я только что перечислил все пользовательские процессы, отсортированные по наибольшему использованию памяти в МБ, вот так:
Вы можете использовать
command=
вместо,comm=
чтобы показать полный путь процесса.=
Только удаляет заголовок столбца.источник
Я обнаружил, что во многих случаях один и тот же процесс имеет подпроцесс fork, и вы заинтересованы в общем объеме памяти, используемой процессом. Например, Google Chrome запускает несколько процессов, и вы хотите знать, сколько памяти занимает Chrome. Я нашел ниже одну строку команды очень полезной
Он заботится о многих вещах, таких как показ памяти в МБ, сортировка по памяти и в основном группирование по команде. Он также группирует% CPU и% memory. Он показывает данные в удобном для пользователя формате.
Эта команда была вдохновлена этим ответом, и она очень помогла мне понять, какой процесс занимает мои ресурсы.
источник