Как пользоваться командой top для наблюдения за процессами в Linux

On Unix-like operating systems, sh is the command name of the Bourne shell, the standard command language interpreter of Unix and many Unix-like operating systems, including Linux.

less – существенно более развитая команда для пролистывания текста. При чтении данных со стандартного ввода она создает буфер, который позволяет листать текст как вперед, так и назад, а также искать как по направлению к концу, так и по направлению к началу текста. Заполнение буфера идет блоками по 64KB, поэтому (если текст на стандартный ввод подается медленно) возможна ситуация «подвисания», когда less показывает очередные поступившие строки, но не позволяет выполнить какую-либо команду.

less понимает все команды more плюс свои.

  • h – вызов справки
  • q – выход
  • SPACE – на экран вперёд
  • b – пролистать экран назад
  • k и j или стрелки вверх и вниз – вертикальная прокрутка по строке
  • g – перейти на 1-ую строку
  • <N>g – перейти на строку N
  • G – перейти на последнюю строку
  • F – перейти на последнюю строку файла и ожидать записи новых строк (аналог tail -f, не работает со стандартным вводом)
  • /pattern – поиск по шаблону вперёд
  • ?pattern – поиск по шаблону назад
  • n – следующее совпадение
  • N – предыдущее совпадение
  • mбуква – отметить позицию буквой
  • ‘буква (апостоф и буква) – перейти на отмеченную позицию
  • ! – запуск shell-команды (% – имя текущего файла, к примеру: ! cat % > /tmp/)

Только для файла

  • v – запуск редактора

Только для стандартного ввода

  • s filename – сохранить выводимый текст в файл filename

Параметры вывода текста less можно указывать как в виде опций, так и в интерактивном режиме. Повторный ввод опции в интерактивном режиме отменяет действие.

  • -g – при поиске подсвечивать только текущее найденное слово (по умолчанию подсвечиваются все вхождения)
  • -N – показывать номера строк

Список ключей для команды ls.

Для повседневной работы, одни из самых используемых ключей для команды ls:

  • -l — вывод подробной информации о содержимом каталога в виде списка;
  • -a (—all) — вывод информации о всех имеющихся объектах явных и скрытых;
  • -A (—allmost-all) — вывод информации о всех имеющихся явных и скрытых объектах (за исключением объектов «.» и «..»);
  • -d (—directory) — вывод информации о директории без вывода его содержимого;
  • -F — к объектам являющимся каталогами добавит в конце символ слеш «/», к объектам являющимися исполняемыми файлами добавляется «*», к объектам являющимися символьными ссылками — «@»;
  • -r (—reverse) — данные ключи меняют сортировку на обратную;
  • -i — отображение номера индексных дескрипторов объектов;
  • -S — сортировка объектов по размеру от большого к меньшему;
  • -Sr — сортировка объектов по размеру от меньшего;
  • -t — сортировка объектов по времени модификации файлов;
  • -R (—recursive) — вывод информации об имеющихся объектах в том числе и объектах во вложенных каталогах.

Способы работы с командой ls и ее ключи, упоминаемые в статье это далеко не весь список. Если вы желаете использовать всю мощь этой на первый взгляд простой команды, то как уже упоминалось ранее, более подробную информацию можно получить при вызове встроенного мануала $ man ls .

Расшифровка значений индикаторов команды top

Нагрузка на процессор (CPU) это первые два значения:

Cpu(s): 31.7%us, 4.2%sy, 0.0%ni, 54.4%id, 9.2%wa, 0.2%hi, 0.4%si, 0.0%st

Кнопка «1» выведет нагрузку по каждому из процессоров.

PID — id процесса USER — пользователь запустивший процесс PR — приоритет процесса NI — nice процесса VIRT — количество памяти, которое может использовать программа RES — потребление физической памяти SHR — размер потенциальной памяти, которая может быть задействована совместно с другими программами

S — состояние процесса:

S — завершен D — ожидание R — выполняется T — остановлен Z — зависCPU — использование ресурсов центральным процессором MEM — использование оперативной памяти сервера TIME+ — время работы процесса COMMAND — название процесса

Клавиша «С» отобразит в строке COMMAND ключи с которыми запущены процессы.

Клавиша «Q» — выйти из команды Top.

Добавление столбцов и сортировка таблицы top

Теперь вы знаете, какая информация зашифрована в каждом столбце таблицы top. Как было отмечено в начале, базовая сортировка данных осуществляется по уровню использования времени ЦПУ, оно же %CPU. Чтобы выполнить в top сортировку по памяти (%MEM), достаточно ввести Shift+M в режиме работы команды top. Если интересует, какой из процессов дольше всего работает, нажмите Shift+T, и увидите интересующую информацию в колонке TIME+. Можно отсортировать процессы по их номеру (PID), набрав на клавиатуре Shift+N.

Чтобы вернуться к режиму сортировки по уровню потребления ресурсов процессора, воспользуйтесь комбинацией Shift+P.

Далеко не все способы сортировки можно задать с помощью «горячих клавиш». Например, для определения процессов, которые больше всего потребляют SWAP, используйте меню выбора полей, которое вызывается комбинацией Shift+F.

Читайте также:  Apple выпускает iOS 14.6, iPad OS 14.6 и watchOS 7.5

С помощью клавиш навигации находим SWAP (или любой другой нужный параметр), клавишей «d» закрепляем его добавление в общую таблицу команды top (в качестве подтверждения вашего выбора рядом появится символ «*»). Чтобы задать сортировку по SWAP, здесь же нажимаем «s» и выходим из меню (ESC). Готово!

Убедиться, что сортировка работает по заданному признаку, можно нажав «x». Колонка с соответствующим признаком будет подсвечена (выделена жирным шрифтом).

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

Теперь оптимизировать работу сервера гораздо проще!

Арендовать виртуальный сервер

  • share
  • Facebook
  • Twitter
  • Email

Что означают цифры в top (как понимать вывод top)

Начнём с краткой характеристики стандартного интерфейса top. Как уже было сказано, его можно почти полностью сконфигурировать под свои предпочтения.

Верхняя часть программы показывает краткую обобщённую информацию об использовании процессора и оперативной памяти системы.

В самой верхней строке показано: текущее время в системе, аптайм (время заботы после загрузки), общее количество пользователей и средняя нагрузка за последние 1, 5 и 15 минут.

Далее идут строки с информацией о:

  • задачах
  • процессоре
  • оперативной памяти
  • разделе подкачки

Далее идёт перечень запущенных процессов. По умолчанию выводиться следующая информация:

PID — уникальный идентификатор процесса

USER — имя пользователя, являющегося владельцем задачи

PR — приоритет задачи в расписании. Если вы в этом поле видите «rt», это означает, что задача запущена в расписании приоритетов в реальном времени.

NI — значение nice задачи. Негативное значение означает более высокий приоритет, а положительное значение nice означает более низкий приоритет

VIRT — общее количество используемой задачей виртуальной памяти, включает все коды, данные, совместные библиотеки, плюс страницы, которые были перенесены в раздел подкачки, и страницы, которые были размечены, но не используются

RES — используемая оперативная память, является подмножеством VIRT, представляет физическую память, не помещённую в раздел подкачки, которую в текущий момент использует задача. Также является суммой полей RSan, RSfd и Rssh.

SHR — размер совместной памяти, подмножество используемой памяти RES, которая может использоваться другими процессами

S — статус процесса. Может быть:

  • D = бесперебойный сон
  • I = простой
  • R = запущен
  • S = спит
  • T = остановлен сигналом управления работой
  • t = остановлен отладчиком во время трассировки
  • Z = зомби
Читайте также:  Что нового в iOS 14.5: гайд по настройке и всем новым функциям

%CPU — использование центрального процессора, доля задачи в потреблённом процессорном времени с момента последнего обновления экрана, выражается в процентах от общего времени CPU

%MEM — доля задачи в использовании памяти (RES)

TIME+ — общее время центрального процессора, которое использовала задача с момента запуска

COMMAND — Имя команды или Строка команды. Показывает строку команды, используемую для запуска задачи или имя ассоциированной программы

Вызов команд из истории

В моем случае это снова запустил ls -lrt, как вы можете видеть из вывода моей истории, это было на шесть команд выше моей последней команды.

Вы также можете использовать «!» как своего рода поиск. Используя мой пример истории bash, скажем, я хотел запустить последний цикл for, который был запущен. Вы можете использовать «! -14», но трудно вспомнить, сколько команд было назад, по крайней мере, для меня. Вместо этого мы можем сказать bash просто выполнить последнюю команду, начинающуюся с «for», вот так:

Пример:

[email protected]:~$ !for for i in `cat names`; do echo -n «FORWARD: $i — REVERSE: «; dig +short $i; done

Вы также можете указать по номеру, какую команду вы хотите запустить. Например, я хотел запустить команду 18 в приведенном выше примере. Используя восклицательный знак, сделать это можно так:

Например:

[email protected]:~$ !18 freshclam

# Комментарий или «обрезка строк»

Чаще всего вы используете хеш или знак числа (#), чтобы сообщить оболочке, что ниже следует комментарий, и он не должен на него воздействовать. Вы можете использовать его в сценариях оболочки и, — менее полезно, — в командной строке.

# This will be ignored by the Bash shell

Однако он не игнорируется, потому что он добавлен в историю команд.

# Комментарий или

Вы также можете использовать хеш, чтобы обрезать строковую переменную и удалить некоторый текст с начала. Эта команда создает строковую переменную с именем this_string.

В этом примере мы присваиваем текст «Dave Geek!» переменной.

this_string=»Dave Geek!»

Эта команда использует echo для печати слова «How-To» в окне терминала. Он извлекает значение, хранящееся в строковой переменной, через расширение параметра . Поскольку мы добавляем хеш и текст «Dave», он обрезает эту часть строки перед тем, как передать её в echo.

echo How-To ${this_string#Dave}

# Комментарий или

Это не меняет значение, хранящееся в строковой переменной; это влияет только на то, что отправлено echo. Мы можем использовать echo для печати значения строковой переменной еще раз и проверить это:

echo $this_string