Как найти потребление памяти конкретным процессом в Linux за каждые 5 секунд
Я просто хочу узнать, как найти потребление памяти конкретным процессом за определенное время (скажем, 5 секунд)
Я новичок в Linux. Итак, подробные шаги по выполнению этого будут оценены
4 ответа
Вы можете использовать SNMP, чтобы получить память и процессорное использование процесса на определенном устройстве в сети:)
Требования:
- на устройстве, на котором запущен процесс, должна быть установлена и запущена snmp
- snmp должен быть настроен на прием запросов от того, где вы будете запускать скрипт ниже (он может быть настроен в snmpd.conf)
- вы должны знать идентификатор процесса (pid) процесса, который вы хотите отслеживать
Заметки:
HOST-RESOURCES-MIB:: hrSWRunPerfCPU - это количество сантисекунд общих ресурсов ЦП системы, потребляемых этим процессом. Обратите внимание, что в многопроцессорной системе это значение может увеличиваться более чем на одну сантисекунду за одну сантисекунду реального времени (настенных часов).
HOST-RESOURCES-MIB:: hrSWRunPerfMem - это общий объем реальной системной памяти, выделенной этому процессу.
**
Скрипт мониторинга процесса:
**
echo "IP: "
read ip
echo "specfiy pid: "
read pid
echo "interval in seconds:"
read interval
while [ 1 ]
do
date
snmpget -v2c -c public $ip HOST-RESOURCES-MIB::hrSWRunPerfCPU.$pid
snmpget -v2c -c public $ip HOST-RESOURCES-MIB::hrSWRunPerfMem.$pid
sleep $interval;
done
Использование top -p PID
где PID - это идентификатор процесса. Должна отображаться информация о процессе, включая процент используемой системной памяти. Тип d
и целое число в секундах для изменения частоты обновления.
Используйте часы, чтобы периодически выполнять ваш скрипт. вот пример:
watch 'cat /proc/status' --interval=5
watch 'ps aux' --interval=5
Это ранее опубликованный вопрос:
Как измерить фактическое использование памяти приложения или процесса?
Похоже, что это может полностью решить ваш вопрос.
edit: Моя любимая Linux-утилита для проверки использования ресурсов процессами стоит на первом месте, хотя она может вводить в заблуждение по причинам, объясненным в связанном вопросе.