Как контролировать память, занятую процессом?

16

У меня есть процесс, который я хотел бы видеть, сколько памяти он потребляет во время работы.

Прямо сейчас я делаю это:

ps faux | grep casper

Но это только дает мне информацию того момента. Было бы неплохо увидеть, как это значение меняется по мере выполнения скрипта.

Как я могу это сделать?

Хоммер Смит
источник

Ответы:

15

Способ 1

Бегать:

top

Проверьте PID программы (первый столбец), затем запустите:

top -p PID

Способ 2

Либо вставьте это в терминал, либо сохраните как mem_usage.sh и запустите из терминала.

#! /bin/bash
while :
do
    clear
    ps faux | grep casper
    sleep 1s
done
Джулиан Стерлинг
источник
1
Как вы можете изменить его с показа%? Из интереса :-)
Уилф
Я получаю это при запуске скрипта: bash: ./memory_usage.sh: bin / bash: плохой интерпретатор: Нет такого файла или каталога
Hommer Smith
Ба! Я отредактировал это! Должен был проверить это правильно перед публикацией. В первой строке должно быть указано, где его запускать из / bin / bash (у меня был bin / bash, поэтому он проверял локально в папке bin для bash)
Julian Stirling
1
@ wilf ps faux | Греп Каспер | awk '{print $ 11} {print $ 6}' Это должно дать вам в одной строке имя программы, а в другой - реальный объем памяти в килобайтах.
Джулиан Стерлинг
6

Для мониторинга только вашего процесса вы можете проверить / proc / PID / status или / proc / PID / statm.

О / proc / PID / statm:

После этого cat /proc/PID/statmвы должны увидеть это:

611450 185001 883 18 0 593431 0

Пояснение:

  1. Размер: - общий размер программы (611450 X 4096/1024 = 2445800 КБ = 2388M)
  2. резидент: - размер резидентного набора (185001 X 4096/1024 = 740004 КБ = 722M)
  3. Поделиться: - общие страницы (883 X 4096 = 3532)
  4. trs: - текст (код) (18 X 4096/1024 = 72 КБ = VmExe)
  5. drs: - данные / стек
  6. lrs: - библиотека (593431 X 4096/1024 = 2373724 КБ = VmData + VmStk)
  7. дт: - грязные страницы

Также вы можете регистрировать активность памяти вашего процесса, выполняя цикл, используя date и cat.

yilmi
источник
4

Вы можете использовать использовать «верх»

man top

Эта программа позволяет сортировать использование ресурсов, среди прочего, по RSS, VSZ, процессорам и т. Д. Это очень полезно.

В качестве альтернативы, для более подробной разбивки использования памяти, попробуйте «pmap»

man pmap

Пример использования:

pmap -x 1234

ура

Совет Безопасности ООН

швейцарский сыр
источник
1
С pmap -x PID, вы имели в виду невероятно подробное использование :-)
Уилф
действительно - никогда не может быть достаточно подробно :)
swisscheese
1
На моем (Ubuntu 16.04.5 LTS) «pmap -x» с PID не показывает ничего, кроме PID и команды. -X делает то же самое.
orrd
2

Откройте системный монитор и перейдите на Processesвкладку:

Уилф
источник
1

Попробуйте:

watch 'ps faux | grep -v grep | grep casper'

Вы также можете изменить интервал обновления, используя --interval <seconds>параметр.

Мартин Дворжак
источник
1
Вам не нужен -v grep, если вы изменили последний на grep [c] asper. Это соответствует Касперу, но не самому себе.
Удан