Как мне найти процесс с наибольшей нагрузкой?

10

У меня одноядерный VPS со средней нагрузкой, которая иногда превышает 25. Когда он достигает этого, он становится невыносимо медленным, и даже команды выполняются dash, что быстрее и использует меньше оперативной памяти, чем bash, для запуска требуется некоторое время. Как я могу отследить, какой процесс вызывает высокую нагрузку?

NerdOfLinux
источник
2
sudo apt install htopдает вам полезный инструмент текстового режима для этой цели (более удобный для пользователя, чем стандартный top). Но topэто хорошо, если вы хотите небольшой отпечаток.
Судодус
2
Длина очереди загрузки показывает, сколько процессов готовы к использованию ЦП. Это не обязательно может быть один процесс, вызывающий проблему.
Торбьерн Равн Андерсен

Ответы:

16

Вы можете установить htop. Хорошая вещь о htopтом, что он покажет вам ваше использование на процессор, а также содержательный текстовый график использования памяти и подкачки прямо вверху.

Для установки htop:

sudo apt-get install htop

Начни это:

htop

введите описание изображения здесь

Нажмите, F6чтобы отсортировать процессы, затем с помощью навигационной клавиши вы можете выбрать PERCENT_CPUи нажать Enter.

введите описание изображения здесь

Или вы можете использовать topтаким образом ( источник ):

top -b -n 1 | head -n 12
neferpitou
источник
2
В качестве ярлыка вы можете использовать Pсортировку по использованию процессора, Mпо памяти или Tпо времени, а также tдля возврата к схеме дерева.
Deltab
Интересно, что htopимеет некоторую базовую поддержку мыши. Если вы нажмете на столбцы, это также позволит вам сортировать их (если я не ошибаюсь). Есть несколько других операций, которые работают с вашей мышью.
Исмаэль Мигель
11

Ниже просто украдено из Unix.SE: Найти процесс, который принимает максимальную загрузку процессора, если загрузка процессора превышает 60%? Хотя, конечно, адаптирован к этому вопросу.

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

ps ahux --sort=-c | awk '{if($3>0.0)printf"%s %6d %s\n",$3,$2,$11}'

Это дает список процессов, у которых есть загрузка ЦП >0.0%, вы можете изменить это значение в соответствии с вашими потребностями, например >50.0. Каждая строка содержит загрузку процессора в процентах, PID и файл процесса.

список процессов с наибольшим использованием процессора

ps ahux --sort=-c | awk 'NR<=5{printf"%s %6d %s\n",$3,$2,$11}'

Это показывает топ 5 ( NR<=5) процессов, в настоящее время вызывающих наибольшую нагрузку на процессор.

Десерт
источник
1

Вчера я учился awkи играл с двумя другими ответами. Вот результат:

  • Получить только процесс с наиболее высокой загрузкой процессора, используя ps aux:

    ps auxh | awk -v max=0 '{if($3>max){CPU=$3; PID=$2; NAME=$11; max=$3}} END{printf "%5s %6d %s\n",CPU,PID,NAME}'
    
  • Получите три процесса с наиболее высокой загрузкой процессора, используя top:

    top -b -n 1 | awk 'NR>7 && NR<11 {printf "top: %5s %6d %s %s\n",$9,$1,$12,$13}'
    
  • Получите три процесса с наиболее высокой загрузкой процессора, используя ps aux:

    ps auxh --sort=-c | awk 'NR<=3 {printf "ps:  %5s %6d %s\n",$3,$2,$11}'
    

Я пытался запустить последние две команды одновременно (с <command>; wait; <command>и <command> & <command> &), но потом понял, что это невозможно вообще :)


Ссылки:

pa4080
источник
Последний не показывает процесс с наибольшей загрузкой процессора, но начинается со второго, который вы, вероятно, имели в виду NR>=2- оказывается, psпредоставляет опцию, hкоторая пропускает строку заголовка, см. Мой обновленный ответ.
десерт
@dessert, вы правы, раньше было NR>=2, но NR>1коротко :) Я обновил ответ.
pa4080
1

Используйте topкоманду

top- отображать процессы Linux

Программа top обеспечивает динамическое представление работающей системы в режиме реального времени. Он может отображать сводную информацию о системе, а также список процессов или потоков, которыми в настоящее время управляет ядро ​​Linux. Типы отображаемой сводной информации о системе и типы, порядок и размер информации, отображаемой для процессов, настраиваются пользователем, и эту конфигурацию можно сделать постоянной при перезапусках.

источник

хороший учебник YouTube

Эрик Королев
источник