Скидка 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 делает обратное: возвращает процесс на передний план.

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

Эффективное управление процессами в 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

Рассмотрим расширенные возможности команды 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 выводит подробную информацию обо всех активных процессах.

Поделиться

Ещё в блоге

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

Обложка статьи о лучших приложениях для самостоятельного хостинга на Cosmos Cloud с панелями приложений вокруг панели управления Cosmos.
Серверы и ОС

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

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

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

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 дней.