- Автор темы
- Администратор
- Модер.
- Команда форума
- #1
Команда ps (сокращение от Process Status) — это утилита командной строки, с помощью которой можно посмотреть информацию о запущенных процессах в системе Linux. Как вы уже знаете, Linux — это многозадачная и многопроцессорная система: то есть в ней несколько процессов могут выполняться одновременно, не влияя друг на друга. Команда ps выводит список текущих запущенных процессов, включая их PID и другие атрибуты. В этом гайде мы сосредоточимся на примерах работы команды ps. Она получает информацию о процессах из виртуальных файлов, расположенных в файловой системе /proc.
ps без аргументов выводит список запущенных процессов в текущем сеансе терминала:
Получим следующий вывод:
В выводе можно увидеть четыре столбца:
Чтобы просмотреть все запущенные процессы, выполните команду ps с аргументом -A.
Также можно выполнить команду ps -e:
Для просмотра процессов, связанных с терминалом, выполните ps -T:
Если нужно просмотреть все процессы, исключив связанные с терминалом и лидерами сессий, выполните команду ps -a. Лидер сессии — это процесс, который запускает другие процессы.
Пример вывода команды ps -a:
Чтобы вывести все текущие процессы, выполните:
Получим следующий вывод:
Флаг -a обозначает все процессы, а -x — выводит все процессы, даже те, которые не связаны с текущим TTY.
Для вывода процессов в формате BSD выполните команду:
Или команду:
Вывод будет следующим:
Чтобы просмотреть список в полном формате, выполните команду:
Также можно выполнить команду:
Получим следующий вывод:
Вывести список процессов, связанных с конкретным пользователем, можно с помощью флага -u:
Например, выведем список всех процессов, связанных с пользователем jamie:
Пример вывода команды ps -u:
Если вам нужно узнать поток определенного процесса, добавьте флаг -L, за которым следует PID. Например, выведем поток для процесса с идентификатором 4264:
Вывод будет следующим:
Иногда вам может понадобиться вывести все процессы, запущенные пользователем root. Для этого выполните команду:
Вывод для команды ps -U будет следующим:
Если вы хотите вывести список всех процессов, связанных с определенной группой, выполните команду:
Или выполните:
Например, чтобы вывести список всех процессов, связанных с группой root, выполните следующую команду:
Вывод будет следующим:
Чтобы узнать уникальный идентификатор процесса, выполните команду:
Например, давайте узнаем PID процесса bash:
Пример вывода команды ps -C bash:
Вы можете вывести список процессов по их уникальному идентификатору:
Например, для вывода процесса с PID 1294 нужно выполнить команду:
Вывод будет следующим:
Обычно большинство процессов создаются из родительских. Потому очень полезно понимать связи между родительскими и дочерними процессами. Команда ниже ищет процессы для процесса bash.
Вы получите следующий вывод:
Допустим, нам нужно вывести все процессы, созданные процессом bash. Для этого выполните команду:
Вывод будет следующим:
Первый процесс, который принадлежит пользователю root, является основным процессом bash, а остальные были им порождены. Чтобы вывести все дочерние процессы с помощью PID основного процесса bash, выполните следующую команду:
Давайте выведем дочерние процессы для процесса с PID 1294:
Получаем вывод:
С помощью команды ps можно просмотреть потоки вместе с процессами. Ниже приведена команда, которая выводит все потоки процесса:
Например, чтобы вывести все потоки, связанные с процессом с PID 1294, нужно выполнить команду:
Пример вывода команды ps -p:
Для вывода только конкретных столбцов можно выполнить команду ps с опцией -o. Например:
Эта команда будет выводить только PID, имя пользователя, процессор, память и команду.
Чтобы переименовать заголовки, выполните следующую команду:
Вывод для команды ps -e -о будет следующим:
Прошедшее время указывает, как долго процесс выполнялся:
Опция -o включает столбец для прошедшего времени.
Команда 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