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