Основные команды Linux: как работает ps

Команда ps (сокращение от Process Status) — это утилита командной строки, с помощью которой можно посмотреть информацию о запущенных процессах в системе Linux. Как вы уже знаете, Linux — это многозадачная и многопроцессорная система: то есть в ней несколько процессов могут выполняться одновременно, не влияя друг на друга. Команда ps выводит список текущих запущенных процессов, включая их PID и другие атрибуты. В этом гайде мы сосредоточимся на примерах работы команды ps. Она получает информацию о процессах из виртуальных файлов, расположенных в файловой системе /proc.

Читайте также: Основные команды Linux: как работает atop

Команда ps без аргументов

ps без аргументов выводит список запущенных процессов в текущем сеансе терминала:

ps

Получим следующий вывод:

В выводе можно увидеть четыре столбца:

  • PID — это уникальный идентификатор процесса.
  • TTY — тип терминала, в который вошел пользователь.
  • TIME — общее время, в течение которого процесс был активен.
  • CMD — команда, которая запустила процесс.

Вывод всех запущенных процессов в разных форматах

Чтобы просмотреть все запущенные процессы, выполните команду ps с аргументом -A.

Также можно выполнить команду ps -e:

Связанные с терминалом процессы

Для просмотра процессов, связанных с терминалом, выполните ps -T:

Процессы, не связанные с терминалом

Если нужно просмотреть все процессы, исключив связанные с терминалом и лидерами сессий, выполните команду ps -a. Лидер сессии — это процесс, который запускает другие процессы.

Пример вывода команды ps -a:

Просмотр всех текущих запущенных процессов

Чтобы вывести все текущие процессы, выполните:

ps -ax

Получим следующий вывод:

Флаг -a обозначает все процессы, а -x — выводит все процессы, даже те, которые не связаны с текущим TTY.

Процессы в формате BSD

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

ps au

Или команду:

ps aux

Вывод будет следующим:

Полноформатный список

Чтобы просмотреть список в полном формате, выполните команду:

ps -ef

Также можно выполнить команду:

ps -eF

Получим следующий вывод:

Фильтр по пользователю

Вывести список процессов, связанных с конкретным пользователем, можно с помощью флага -u:

ps -u user

Например, выведем список всех процессов, связанных с пользователем jamie:

ps -u jamie

Пример вывода команды ps -u:

Фильтр по потокам

Если вам нужно узнать поток определенного процесса, добавьте флаг -L, за которым следует PID. Например, выведем поток для процесса с идентификатором 4264:

ps -L 4264

Вывод будет следующим:

Процессы пользователя root

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

ps -U root -u root

Вывод для команды ps -U будет следующим:

Групповые процессы

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

ps -fG group_name

Или выполните:

ps -fG groupID

Например, чтобы вывести список всех процессов, связанных с группой root, выполните следующую команду:

ps -fG root

Вывод будет следующим:

Поиск PID процесса

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

ps -C process_name

Например, давайте узнаем PID процесса bash:

ps -C bash

Пример вывода команды ps -C bash:

Список процессов по PID

Вы можете вывести список процессов по их уникальному идентификатору:

ps -fp PID

Например, для вывода процесса с PID 1294 нужно выполнить команду:

ps -fp 1294

Вывод будет следующим:

Вывод иерархии процессов на древовидной диаграмме

Обычно большинство процессов создаются из родительских. Потому очень полезно понимать связи между родительскими и дочерними процессами. Команда ниже ищет процессы для процесса bash.

ps -f --forest -C bash

Вы получите следующий вывод:

Вывод дочерних процессов

Допустим, нам нужно вывести все процессы, созданные процессом bash. Для этого выполните команду:

ps -o pid,uname,comm -C bash

Вывод будет следующим:

Первый процесс, который принадлежит пользователю root, является основным процессом bash, а остальные были им порождены. Чтобы вывести все дочерние процессы с помощью PID основного процесса bash, выполните следующую команду:

ps --ppid PID no.

Давайте выведем дочерние процессы для процесса с PID 1294:

ps --ppid 1294

Получаем вывод:

Просмотр потоков процессов

С помощью команды ps можно просмотреть потоки вместе с процессами. Ниже приведена команда, которая выводит все потоки процесса:

ps -p pid_no -L

Например, чтобы вывести все потоки, связанные с процессом с PID 1294, нужно выполнить команду:

ps -p 1294 -L

Пример вывода команды ps -p:

Вывод выбранных столбцов

Для вывода только конкретных столбцов можно выполнить команду ps с опцией -o. Например:

ps -e -o pid,uname,pcpu,pmem,comm

Эта команда будет выводить только PID, имя пользователя, процессор, память и команду.

Переименование заголовков столбцов

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

ps -e -o pid=PID,uname=USERNAME,pcpu=CPU_USAGE,pmem=%MEM,comm=COMMAND

Вывод для команды ps -e -о будет следующим:

Прошедшее время работы процессов

Прошедшее время указывает, как долго процесс выполнялся:

ps -e -o pid,comm,etime

Получаем следующий вывод:

Опция -o включает столбец для прошедшего времени.

Команда ps с grep

ps в комбинации с командой grep используется для поиска определенного процесса. Например, давайте найдем процесс systemmd:

ps -ef  | grep systemd

Пример вывода команды ps -ef:

Добавить комментарий