it-swarm-ru.tech

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

Я ищу что-то вроде верхней части загрузки процессора. Есть ли аргумент командной строки для top, который делает это? В настоящее время моя память настолько переполнена, что даже 'man top' выходит из строя из-за нехватки памяти :)

87
ripper234

Внутри top вы можете попробовать следующее:

  • Нажмите SHIFT+f
  • Нажмите букву, соответствующую% MEM
  • Нажмите ENTER

Вы также можете попробовать:

$ ps -eo pmem,pcpu,vsize,pid,cmd | sort -k 1 -nr | head -5

Это даст 5 лучших процессов по использованию памяти.

107
Steven D

Если он установлен, мне нравится htop, после его запуска вы можете нажать f6down arrow (до MEM%), enter сортировать по памяти.

11
xenoterracide

После запуска top нажмите F переключиться на экран поля сортировки. Выберите одно из перечисленных полей, нажав клавишу слева; ты наверное хочешь N за MEM%

7
Michael Mrozek

В Solaris вам понадобится следующая команда:

prstat -a -s size

Это перечислит все процессы в порядке убывания размера изображения процесса. Обратите внимание, что последнее основано на памяти, выделенной процессу операционной системой, а не на ее резидентном использовании физической памяти.

Предположительно существуют версии "top" для Solaris, но они не являются частью стандартной установки.

6
Joel Hoff

Хорошая альтернатива top - htop. Проверьте это, это намного более удобно для пользователя, чем обычный топ.

5
Klark

Это может быть достигнуто несколькими способами, мой любимый:

PS путь :

  1. [[email protected] ~]$ ps -eo pid,cmd,%cpu,%mem --sort=-%mem

    Куда,

    • -e: выбрать весь процесс
    • -o: применить к формату вывода
    • pidcmd%cpu, %mem: Выходной формат в точном порядке. Здесь pcpu и ​​pmem можно использовать вместо %cpu а также %mem.
    • Но, к сожалению (не знаю почему) это не работает на некоторой машине (Oracle Linux) и на более старой машине. Вы можете использовать следующие похожие альтернативы.
  2. [[email protected] ~]$ ps -eo pid,cmd,%cpu,%mem --sort -rss

    Куда,

    • -rss: размер резидентного набора, физическая память без перестановки, используемая задачей
  3. [[email protected] ~]$ ps --cols 120 aux --sort -rss

    Куда,

    • --cols 100: указать ширину столбца вывода, поскольку иногда cmd становится очень длинным. Это не обязательно, если вы не хотите сокращать команды с аргументами.
    • aux: чтобы увидеть каждый процесс в системе, используя синтаксис BSD

Верхний путь:

[[email protected] ~]$ top -b -o +%MEM

Куда,

  • -b: использовать top в режиме batch.
  • -o: переопределить имя поля сортировки, за которым следует имя поля %MEM

И вы всегда можете использовать head и ​​/ или tail для управления выводом.

1
muhammad

Эта команда идентифицирует основные процессы, потребляющие память:

ps -A --sort -rss -o pid,pmem:40,cmd:500 | head -n 6 | tr -s " " ";z"
1
user90191

Globally: Всегда рекомендуется использовать инструмент анализа журналов для регистрации журналов истории, таких как Splunk, ELK и т.д. Чтобы с помощью языка запросов можно было легко получить PID и его использование процессором и памятью.

НА УРОВНЕ СЕРВЕРА/ОС: Изнутри вверху вы можете попробовать следующее:

 Press SHIFT+M  ---> This will give you a process which takes more memory in descending order.

Вы также можете попробовать:

$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -10

Это даст 10 лучших процессов по использованию памяти. Также вы можете использовать утилиту vmstat, чтобы найти использование RAM одновременно не для истории).

0
Santosh Garole

Ты можешь попробовать ps aux --sort -rss | head или ps aux | sort -nk +4 | tail

0
David Okwii