Скидка 50% на все тарифы, ограниченное время. От $2.48/mo
Осталось 10 мин
Серверы и ОС

Управление процессами: команда Linux ps aux

Ада Лавгуд By Ада Лавгуд 10 мин чтения Обновлено 11 июля 2024 г.
команда linux ps aux

У вас открыто как минимум пять вкладок в браузере в попытках найти решение проблемы с Linux?
Это не особенность именно вас или людей в целом. Машины тоже работают в многозадачном режиме. И точно так же, как вы, Linux умеет выполнять несколько процессов одновременно. Работаете ли вы с Linux профессионально как разработчик или используете его для повседневных задач — вам важно понимать, как устроены эти параллельные процессы, чтобы сохранять полный контроль над системой. Управление процессами и контроль над системой — ключевые аспекты работы с Linux.

Чтобы эффективно управлять запущенными процессами, отслеживать происходящее в реальном времени, иметь общее представление о фоновых процессах и контролировать системные ресурсы, необходимо хорошо разбираться в управлении процессами. Команда ps aux — мощный инструмент, который играет ключевую роль в управлении процессами и контроле над системой. В этой статье мы подробнее рассмотрим команду ps aux и её сценарии использования, а также разберём основы работы процессов Linux.

Управление процессами в Linux

При работе с Linux большинство взаимодействий с системой происходит в форме команд. В Linux процесс — это выполнение команды. Управление процессами Linux предполагает работу с процессами, которые запустила та или иная команда. Вы можете завершить процесс, запустить новый или возобновить завершённые. Также можно управлять командами, которые выполняются в данный момент.

Процессы Linux делятся на два типа:

  • Процессы переднего плана
  • Фоновые процессы

Linux: процессы переднего плана

Процесс переднего плана — это активно выполняемый процесс, который требует постоянного взаимодействия с пользователем в режиме реального времени. Пока такой процесс работает, выполнение остальных процессов приостанавливается: запускать другие команды невозможно. Процесс переднего плана получает данные с клавиатуры через стандартный ввод, или stdin. Для ясности: stdin и stdout — это потоки данных Linux, как и stderr. По сути, через них пользователь взаимодействует с процессом и передаёт ему данные. Стандартный вывод, или stdout, формируется процессом на основе его логики и полученных данных. В Linux процессы переднего плана — это режим выполнения по умолчанию.

Linux: фоновые процессы

Фоновые процессы — полная противоположность процессам переднего плана: они не требуют участия пользователя и не занимают терминал целиком, позволяя параллельно выполнять другие процессы. Ввод и вывод у них тоже устроены иначе. Как правило, они не читают stdin, однако их результаты могут отображаться через stdout. Вывод фоновых процессов появляется одновременно с выводом процессов переднего плана — так можно следить за ходом или результатами фонового процесса, не прерывая другие важные операции.

Поскольку в Linux большинство задач выполняется через командную строку, процессы переднего плана могут мешать работе: они блокируют терминал. Запуск процессов в фоне освобождает терминал для других задач, поэтому перевод задачи переднего плана в фон — вполне разумное решение. Чтобы перевести процесс в фон нужно сначала остановить его выполнение на переднем плане — для этого достаточно нажать CTRL+Z. Затем введите команду bg, и остановленный процесс продолжит работу в фоне. Команда fg делает обратное: возвращает процесс на передний план.

Статус процесса: синтаксис, команды и интерпретация вывода

Эффективное управление процессами в Linux невозможно без понимания их статусов, которые можно отслеживать командой ps aux. Но прежде чем разбирать ps aux подробнее, рассмотрим основные статусы процессов. Их существует несколько разновидностей — ниже приведена таблица наиболее распространённых.

Статус процесса описание
Выполняется (R) Процесс активно выполняется и использует ресурсы CPU.
Ожидание Прерываемое (S) Процесс ожидает определённого ввода или события, чтобы продолжить работу. В данный момент ресурсы CPU не используются. Как только ресурсы появятся или придёт нужный сигнал, процесс возобновится.
Непрерываемое (D) Как и процесс в прерываемом ожидании, процесс в непрерываемом ожидании не использует ресурсы CPU. Разница в том, что он не реагирует на сигналы и возобновляется только при появлении необходимых ресурсов.
Остановлен (T) Процесс приостановлен по команде пользователя или в результате определённого события. В этом состоянии процесс не использует ресурсы CPU.
Завершён (X) Процесс завершён и больше не существует.

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

Синтаксис и команды для получения статуса процессов

Базовый синтаксис команды ps для получения статуса процессов в Linux:

ps [process name]

Команда ps поддерживает и другие параметры:

aux: Этот параметр выводит полный список всех процессов, запущенных в системе: идентификаторы процессов (PID), идентификаторы родительских процессов (PPID), использование CPU и памяти, а также статусы процессов. Вывод ps aux значительно удобнее для чтения и содержит гораздо больше полезной информации, чем базовая команда ps.

эф: Этот параметр выводит полный список процессов с дополнительными сведениями, включая иерархию процессов в виде дерева.

l: Этот параметр выводит расширенный список с подробной информацией о каждом процессе.

Разбор вывода

При запуске команды ps с нужными параметрами она выводит таблицу активных процессов. Каждая колонка отображает отдельный атрибут процесса: идентификатор процесса (PID), идентификатор родительского процесса (PPID), использование CPU и памяти, статус процесса, тип терминала и имя команды.

Вот что означает каждая из этих колонок:

ПИД: Уникальный идентификатор процесса.

ТТУ: Тип терминала, в котором работает пользователь.

ВРЕМЯ: Суммарное время CPU, израсходованное процессом, в минутах и секундах.

CMD: Имя команды, запустившей этот процесс.

Анализ данных, которые возвращает команда ps, позволяет лучше понять поведение вашего Linux-сервера.

Продвинутые приёмы работы с командой ps

Рассмотрим расширенные возможности команды ps и способы их эффективного использования:

1. Сортировка процессов

Команда ps aux позволяет сортировать вывод по различным колонкам. Например, можно упорядочить процессы по идентификатору или по использованию CPU.

Пример сортировки процессов по идентификатору с помощью ps aux:

ps aux –-sort pid

Команда head используется для отображения только первых пяти строк вывода.

ps aux сортировать по pid

2. Дерево процессов

Чтобы наглядно увидеть связи между родительскими и дочерними процессами, используйте команду ps с параметром forest.

ps -aux --forest

связи между процессами Linux

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

pstree [pid or username]

Передав команде PID, вы указываете ей считать этот процесс корнем дерева.

3. Фильтрация процессов

Допустим, вам нужно работать с определённой группой процессов: например, вывести список всех процессов конкретного пользователя. Фильтровать процессы по нужному признаку можно с помощью команды ps. В этом примере процессы отфильтрованы по имени пользователя.

ps -u [username]

фильтрация процессов Linux с помощью команды ps

Команда ps aux grep позволяет фильтровать процессы по любому шаблону или ключевому слову. Посмотрите на пример ниже:

пример использования команды ps aux grep

Команда сначала выводит список всех процессов, а затем передаёт результат команде grep, которая фильтрует этот список по заданному критерию. На изображении выше видны все процессы, в информации о которых встречается число 15.

Подробнее о возможностях команды ps можно узнать из её справочной страницы. Следующая команда откроет её:

man ps

Управление приоритетом задач в Linux

Чтобы полнее объяснить, как работает управление процессами в Linux, нужно разобраться с приоритетом процессов и способами его изменить. Представьте ситуацию: у вас запущено несколько процессов, и CPU перегружен задачами. Чтобы грамотно распределить ресурсы, необходимо скорректировать приоритеты выполняемых задач. Каждый процесс в Linux имеет числовое значение приоритета, которое помогает ядру распределять задачи. Значение приоритета варьируется от -20 до 19: 19 означает наименее важную задачу, -20 - наиболее срочную. Процесс с наивысшим приоритетом получает больше времени CPU по сравнению с остальными. Значения приоритета принято называть «nice»: чем меньше значение nice, тем выше приоритет.

Для эффективного распределения системных ресурсов используйте команды nice и renice.

Но прежде чем менять приоритет процессов, рассмотрим первый сценарий использования команды ps.

  • Просмотр текущего приоритета всех процессов с помощью команды ps:

Эта команда выводит список всех процессов с их идентификаторами (PID), именами команд и текущим приоритетом (значение nice):

 

ps -eo pid,cmd,nice

Получение приоритета всех процессов с помощью команды ps

  • Запуск процесса с высоким приоритетом по умолчанию с помощью команды nice:

Запустить процесс с нужным приоритетом можно следующей командой:

nice -n [priority] [command]

Замените [priority] на желаемое отрицательное значение приоритета, а [command] - на нужную команду.

Пример:

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

  • Изменение приоритета уже запущенного процесса:
renice -n [priority] -p [PID]

Замените [PID] на идентификатор нужного процесса.

Если вам нужна мощная машина на Linux для решения самых разных задач, Linux VPS — оптимальное решение. Cloudzy предлагает различные тарифы Linux VPS с предустановленным дистрибутивом на ваш выбор. Круглосуточная поддержка, 30-дневная гарантия возврата средств и гарантия аптайма 99.95% — и при этом Cloudzy удерживает доступные цены. Тарифы на Linux VPS начинаются от $4.95 в месяц.

Хостинг Linux VPS

Выберите экономный или премиальный Linux VPS для хостинга сайта или удалённого рабочего стола по минимальной цене. VPS работает на базе Linux KVM для повышения эффективности и использует производительное железо с хранилищем NVMe SSD для максимальной скорости.

Читать далее

Заключение

Умение управлять процессами и контролировать систему необходимо системным администраторам, энтузиастам Linux и рядовым пользователям. Разобравшись с возможностями команды ps, вы значительно упростите себе изучение управления процессами. Именно поэтому в этой статье мы рассмотрели ключевые сценарии использования команды ps и дали читателям базовое представление о процессах в Linux.

Часто задаваемые вопросы

Что такое команда ps aux в Linux?

ps aux — широко используемая команда в Linux для получения информации о запущенных процессах. Она выводит полный список процессов в удобочитаемом формате: идентификаторы процессов (PID), использование CPU и памяти, состояние выполнения и другие важные сведения.

Какие два типа процессов существуют в Linux?

Процессы переднего плана и фоновые процессы. Процессы переднего плана занимают терминал на время выполнения и блокируют запуск других команд. Фоновые процессы выполняются в фоне и не захватывают терминал целиком.

Как посмотреть список запущенных процессов в Linux?

Список запущенных процессов в Linux можно получить с помощью команд ps, top или htop. Например, команда ps aux выводит подробную информацию обо всех активных процессах.

Поделиться

Другие статьи блога

Читать дальше.

Лучшие self-hosted приложения для запуска с Cosmos Cloud — обложка с панелями приложений вокруг дашборда Cosmos.
Серверы и ОС

Лучшие self-hosted приложения для Cosmos Cloud: файлы, медиа, пароли, автоматизация и не только!

Maybe вы уже настроили Cosmos Cloud и хотите понять, какие приложения с ним хорошо сочетаются, или ещё не определились с Cosmos и просто хотите оценить, насколько он вписывается в ваш рабочий процесс

Ник СильверНик Сильвер 16 мин. чтения
Portainer vs Cosmos Cloud для управления приложениями Docker: обложка с диаграммой гибридной настройки и блоками neon ops и доступа.
Серверы и ОС

Portainer vs Cosmos Cloud: что лучше подходит для управления приложениями Docker

Если вы уже знакомы с Docker и хотите найти удобный способ запустить растущий стек приложений, вот короткий ответ на вопрос Portainer vs Cosmos Cloud. Portainer — более сильный выбор для прямого

Ник СильверНик Сильвер 14 мин. чтения
Cosmos Cloud vs CasaOS vs Umbrel: графика со сравнением трёх вариантов самостоятельного хостинга внутри абстрактной облачной сети.
Серверы и ОС

Cosmos Cloud vs CasaOS vs Umbrel: какая платформа для самостоятельного хостинга подойдёт вам?

Если коротко: CasaOS по-прежнему проще всего для старта, Umbrel выглядит наиболее аккуратно и продуманно, а Cosmos Cloud имеет смысл, когда нужен более жёсткий контроль над доме

Ник СильверНик Сильвер 11 мин. чтения

Готовы к деплою? От $2.48/мес.

Независимый облачный провайдер с 2008 года. AMD EPYC, NVMe, 40 Gbps. Возврат средств в течение 14 дней.