Команда ps Linux

Для просмотра перечня процессов Linux принято использовать различные программы.

ps (process status) — одна из самых распространенных утилит, применяемых в работе для этих целей. Данный инструмент достаточно прост и понятен, однако он не поддерживает интерактивный режим. Популярность ps скорее связана с обилием доступных опций, при помощи которых можно вносить необходимые коррективы в процессы Линукс.

В данном материале мы разберем, как пользоваться утилитой ps и как применять опции (ключи) на практике.

Процессы что это

Для начала стоит затронуть азы и понять, что собой представляет процесс в операционной системе.

Под процессом (processus) понимается экземпляр запущенный программы, который может находится в разных состояниях: одни активно исполняются, какие-то могли стать зомби, так как не был сделан wait, какие-то могут ожидать выполнения долгой задачи дочернего процесса.

Основные состояния:

    • D — uninterruptible sleep (непрерываемый сон, обычно во время IO операций);
    • R — running и runnable (исполняется или ожидает исполнения);
    • S — interruptible sleep (обычный спящий процесс, который может быть прерван, ожидает какого-то события);
    • T — остановлен сигналом управления задачами;
    • Z — упомянутый ранее зомби-процесс.

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

 

Синтаксис

Рассмотрим синтаксис process status.

$ ps опции

$ ps опции | grep параметр

Опции утилиты :

  1. Чтобы выбрать все процессы, используется -A, -е, (а).
  2. Чтобы выбрать все процессы за исключением фоновых, используется -a.
  3. Чтобы выбрать все процессы, в числе которых есть даже фоновые, но отсутствуют процессы сессий, используется -d, (g).
  4. Чтобы выбрать все процессы, кроме указанных, используется -N.
  5. Чтобы выбрать все процессы по имени команды, используется -C.

 

Чтобы выбрать процессы по:

    • ID группы: -G.
    • PID: -p (p).
    • PID родительского процесса: —ppid.
    • ID сессии: -s.
    • TTY: -t (t).

Для того, чтобы выбрать processus определенного пользователя операционной системы Linux, применяется опция -u (U).

 

Примеры

Наиболее часто утилита используется с 3 ключами:

    • a – убирает ограничение о собственных процессах;
    • u – добавляет расширенный набор часто нужных колонок;
    • x – убирает ограничение о процессах, запущенных из текущего терминала.

 

Три ключа

 

Чтобы посмотреть список процессов Линукс для текущей оболочки, необходимо задать команду без добавления каких-либо аргументов. Это должно выглядеть следующим образом:

$ ps

 

Команда без аргументовЧтобы увидеть все активные процессы, выведенные на экран в общем формате системы, следует задать:

$ ps -A

 

Все активныеАльтернативный вариант команды для ввода в строке терминала:

 

$ ps -e

Для отображения процессов в формате BSD потребуется выполнить действие:

$ ps au

Полноформатный листинг задается так:

$ ps -eF

Пользовательские процессы выводятся на экран немного по-другому. Чтобы посмотреть все процессы, принадлежащие себе, необходимо ввести:

$ ps -x

Далее приведем пример вывода информации относительно процессов другого пользователя. В этом случае нужно воспользоваться его идентификатором. Что вводить в терминале:

$ ps -fU user

Разумеется, указанное имя пользователя «user» необходимо заменить актуальным. Также не стоит забывать о важности добавления флага -U. Внимательно повторите структуру данной команды.

В операционной системе Линукс выполняются процессы с правами пользователя root. Чтобы получить доступ к каждому из них, необходимо задать:

$ ps -U root -u root

При необходимости ознакомления со списком процессов, которые принадлежат какой-либо группе, необходимо добавить к команде её наименование.

Например:

$ ps -fG 65

Вместо наименования «65» введите актуальные данные.

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

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

$ ps -e —forest

 

Как вывести поток процессов

Все потоки можно посмотреть при помощи команды данного вида:

$ ps -fL -C sshd

Зная PID процесса, можно найти его наименование. Это легко сделать, если ввести:

$ ps -p 1334 -o comm=

Благодаря использованию флага –C можно отобразить на экране сразу два типа процессов: родительский и дочерний. На практике это выполняется так:

$ ps -C systemd

Если пользователю понадобится информация о безопасности процессов, необходимо воспользоваться командой следующего вида:

$ ps -eM

Альтернативная вариация команды:

$ ps --context

 

ВАЖНО! Утилита ps является «родным» инструментом в Ubuntu. С её помощью можно увидеть только статическую информацию о процессах, происходящих в операционной системе. Зачастую этого достаточно для работы. Но если потребуются данные относительно обновляемого вывода, будет целесообразнее воспользоваться другими инструментами мониторинга.

Например:

    • top
    • htop
    • glances

Заключение

Программа ps пользуется большой популярностью у владельцев дистрибутивов Linux. Её неоспоримое преимущество перед конкурентами – обилие опций, с помощью которых легко получить информацию относительно списка текущих активных и мёртвых процессов в системе.