Использование команды ps для просмотра процессов Linux

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

Что это такое?

Команда ps выводит список текущих процессов на вашем сервере. Используется обычно в сочетании с командой grep и more или less.

Примечание: more и less - дополнительные команды, которые помогают фильтровать и разбивать на страницы выходные данные ps, так как они часто бывают довольно длинными.

Работа с командой ps

Команда ps по умолчанию есть во всех дистрибутивах Linux. Без каких либо аргументов и опций ps показывает запущенные процессы, выполняемые пользователем в окне терминала:

ps

Результат:

  PID TTY          TIME CMD
28599 pts/0    00:00:00 bash
28616 pts/0    00:00:00 ps

На выходе будут отображаться строки данных, содержащих следующую информацию: PID - это уникальный идентификатор процесса, TTY - тип терминала, TIME - это общее время использования процессорного времени процессом (00:00:00 напротив процесса bash указывает, что процессорное время вообще не было использовано до сих пор), CMD - это имя команды, которая запустила этот процесс.

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

ps -e

или:

ps -A

Пример вывода:

 PID TTY          TIME CMD
    1 ?        00:00:13 systemd
    2 ?        00:00:00 kthreadd
    3 ?        00:00:01 ksoftirqd/0
    5 ?        00:00:00 kworker/0:0H
    7 ?        00:00:01 migration/0
[...]

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

ps -d

Примечание: лидеры сеанса - процессы, у которых PID равен SID. Когда один процесс запускает другие процессы, он является лидером сеанса всех других процессов. Итак, представьте себе процесс A, который запускает процесс B и обрабатывает C. Процесс B запускает процесс D и процесс C запускает процесс E. Когда вы перечислите все процессы, за исключением сессий лидеров, вы увидите B, C, D и E, но не A.

Вы можете инвертировать вывод с помощью переключателя -N. Например, если вы хотите вывести только лидеров сеансов, выполните следующую команду:

ps -d -N

Очевидно, что данную опцию не очень разумно использовать с ключами -e или -A, поскольку в таком случае в консоль ничего не выведется.

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

ps T

Если вы хотите просмотреть все работающие (running) процессы, используя следующую команду:

ps r

Выбор конкретных процессов

Вы можете вывести определенные процессы с помощью ps с помощью различных критериев выбора.

Например, если вы знаете идентификатор процесса PID, вы можете просто использовать следующую команду:

ps -p <pid>

Например:

ps -p 22813

Вы можете выбрать несколько процессов, указав несколько идентификаторов процесса следующим образом:

ps -p "<pid1> <pid2>"

Например:

ps -p "22813 28599"

Вы также можете указать их с помощью списка, разделенного запятыми:

ps -p <pid1>,<pid2>

Например:

ps -p 22813,28599

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

ps -C <команда>

Например:

ps -C nginx

Другие способы фильтрации результатов - по группам. Вы можете искать по имени группы, используя следующий синтаксис:

ps -G <groupname>
ps --Group <groupname>

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

ps -G "accounts"
ps --Group "accounts"

Вы также можете выполнять поиск по идентификатору группы GID вместо имени группы с помощью строчной буквы g следующим образом:

ps -g <groupid>
ps --group <groupid>

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

ps U <userlist>

Например:

ps U gary

Обратите внимание, что это показывает человека, чьи учетные данные используются для запуска команды. Например, если вы вошли в систему как gary и запустите указанную выше команду, она покажет всю команду, которую вы выполняете. Если вы входите в систему как tom и используете sudo для запуска команды, то приведенная выше команда покажет команду tоm’а, которую запускает gary, а не tom.

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

ps -U "gary"

Форматирование вывода команды ps

По умолчанию вы получаете четыре столбца, когда используете команду ps: PID, TTY, Time, Command. О них написано в начале статьи.

Вы можете получить полный список, выполнив следующую команду:

ps -ef

Опция -e, показывает все процессы, а -f показывает полную информацию: UID - идентификатор пользователя выполняющего команду, PID - это идентификатор процесса команды, PPID - идентификатор родительского процесса, который отпустил команду, C - количество дочерних процессов, STIME - это время начала процесса, TTY, TIME, CMD.

Вы можете получить еще больше информационных столбцов, используя следующую команду:

ps -eF

Дополнительные столбцы - SZ, RSS и PSR. SZ - это размер процесса, RSS - реальный размер памяти, а PSR - процессор, которому назначена команда.

Вы можете указать пользовательский формат, используя следующий формат:

ps -e --format <format>

Доступны следующие форматы: %cpu, %mem, args, c, cmd, comm, cp, cputime, egid, egroup, etime, euid, euser, gid, group, pgid, pgrp, ppid, start, sz, thcount, time, uid, uname и многие другие, ознакомиться с ними в разделе помощи man.

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

ps -e --format="uid uname cmd time"

Вы можете смешивать и сопоставлять элементы по своему усмотрению.

Сортировка вывода

Чтобы отсортировать выходные данные, используйте следующие обозначения:

ps -ef --sort <sortcolumns>

Доступны следующие форматы: cmd, pcpu, flags, pgrp, cutime, cstime, utime, pid, ppid, size, uid, user и многие другие, ознакомиться с ними в разделе помощи man.

Пример команды сортировки выглядит следующим образом:

ps -ef --sort user,pid

Использование ps совместно с grep, more и less

Команды less и more помогают вам подробно просматривать результаты по одной странице за раз:

ps -ef | more
ps -ef | less

Утилита grep помогает фильтровать результаты из команды ps, например, чтобы вывести строки содержащие ключевое слово nginx:

ps -ef | grep nginx

Команда ps обычно используется для листинга процессов в Linux.

 


Средняя оценка: 5,0, всего оценок: 1