У вас открыто как минимум пять вкладок в браузере в попытках найти решение проблемы с 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 используется для отображения только первых пяти строк вывода.

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

Для отображения иерархии процессов в виде дерева можно также использовать команду pstree. Её вывод нагляднее и точнее отражает структуру зависимостей между процессами. Введите следующую команду:
pstree [pid or username]
Передав команде PID, вы указываете ей считать этот процесс корнем дерева.
3. Фильтрация процессов
Допустим, вам нужно работать с определённой группой процессов: например, вывести список всех процессов конкретного пользователя. Фильтровать процессы по нужному признаку можно с помощью команды ps. В этом примере процессы отфильтрованы по имени пользователя.
ps -u [username]

Команда 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

- Запуск процесса с высоким приоритетом по умолчанию с помощью команды 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 для хостинга сайта или удалённого рабочего стола по минимальной цене. 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 выводит подробную информацию обо всех активных процессах.