В инструкции описаны наиболее распространенные примеры использования команды 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.
Ознакомиться с другими инструкциями вы можете на нашем сайте. А чтобы попробовать услугу — кликните на кнопку ниже.