Гид по технологиям

Команда ps в Linux: руководство и примеры

7 min read Linux Обновлено 31 Dec 2025
Команда ps в Linux — руководство и примеры
Команда ps в Linux — руководство и примеры

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

Команда ps в Linux, пример вывода

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

Что такое команда ps

Процесс — это запущенная программа, базовый элемент выполнения в Linux. Любое приложение запускает один или несколько процессов: от тяжёлых видеоредакторов до простых утилит типа mv. Команда ps, сокращение от process status, выводит список процессов и дополнительные поля, помогающие понять, кто, когда и как использует ресурсы системы.

Определения на одну строку:

  • Процесс: экземпляр запущенной программы с собственными ресурсами и идентификатором PID.
  • Поток: лёгкая единица выполнения внутри процесса, может существовать несколько потоков на процесс.

Синтаксис

Базовый синтаксис простой:

ps [options]

Если запустить ps без аргументов, вы получите процессы, связанные с текущим терминалом и сеансом:

ps

Вывод ps по умолчанию

Вывод по умолчанию обычно включает столбцы PID, TTY, TIME, CMD. Далее показаны значения и что они означают:

  • PID: идентификатор процесса
  • TTY: терминал, от которого запущен процесс
  • TIME: кумулятивное время CPU, использованное процессом
  • CMD: команда, запустившая процесс

Частые случаи использования и примеры

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

Чтобы вывести все процессы, используйте флаги -A или -e:

ps -A
ps -e

Все процессы в системе

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

Флаг -T показывает процессы, связанные с текущим терминалом:

ps -T

Процессы терминала

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

Флаг -a выводит процессы, не связанные с текущим терминалом:

ps -a

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

Инверсия выбора

Флаги -N или –deselect инвертируют выбор флага. Например, ps -T показывает процессы терминала, а ps -T -N показывает все процессы, кроме связанных с текущим терминалом:

ps -T -N
ps -T --deselect

Инверсия выбора

Показать произвольные столбцы

Чтобы задать, какие столбцы выводить, используйте -eo и список полей через запятую:

ps -eo pid,uname,pcpu,stime,pri,f

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

Настраиваемый вывод ps

Полезные поля, которые можно запросить:

  • pid, ppid — идентификаторы процесса и родителя
  • uid, user, uname — идентификатор/имя пользователя
  • %cpu, %mem, pcpu, pmem — использование CPU и памяти
  • etime, stime — время выполнения или время запуска
  • cmd, comm — команда и исполняемый файл

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

Флаг -o позволяет задать собственные заголовки. Пример:

ps -e -o pid=Process_ID,uid=User_ID,com=COMMAND

Здесь надписи заголовков будут заменены на указанные значения.

Все запущенные процессы

Флаг -ax выводит все выполняющиеся процессы, включая фоновые:

ps -ax

Все выполняющиеся процессы

BSD-формат аргументов

Некоторые администраторы привыкли к BSD-стилю без дефисов. Эквивалент -A в BSD-формате — au:

ps au

Где a означает all, u — show user-oriented format.

BSD формат вывода ps

Полный формат вывода

Для подробного вывода используйте -ef или -eF:

ps -ef
ps -eF

Полный формат ps

Вывод в полном формате обычно включает:

  • UID: пользователь, запустивший процесс
  • PID: идентификатор процесса
  • PPID: PID родителя
  • C: информация о планировщике и использовании CPU
  • STIME: время старта процесса
  • TTY: терминал
  • TIME: суммарное время CPU
  • CMD: команда запуска

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

Флаг -u показывает процессы, запущенные указанным пользователем:

ps -u username

Процессы конкретного пользователя

Процессы root

Чтобы увидеть процессы пользователя root, используйте -U и -u:

ps -U root -u root

Процессы root

Получить PID процесса по имени

Флаг -C ищет процессы по имени и выводит их PID:

ps -C process-name

Пример для bash:

ps -C bash

Процессы bash

Список потоков процесса

Процессы могут содержать несколько потоков. Флаг -L в комбинации с PID показывает все потоки процесса:

ps -L pid
ps -L 1250

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

Процессы по группе

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

ps -fG groupname
ps -fG groupid

Пример:

ps -fG sudoers
ps -fg 1000

Процессы по группе

Дерево процессов

Для древовидного представления используйте опцию –forest вместе с форматным выводом (-f):

ps -f --forest -C bash

Это покажет иерархию процессов bash и дочерних процессов.

Дерево процессов ps

Советы по использованию и сценарии

Важно: ps показывает текущую снимок состояния процессов, то есть статический список в момент вызова. Для динамического мониторинга лучше использовать top или htop.

Комбинации с grep

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

ps -ef | grep nginx

Однако лучший вариант для поиска по имени — pgrep или pidof, они специализированы на этой задаче и избегают ложных совпадений.

Удаление зависших процессов

Если найден зависший процесс, его можно завершить через kill, указав PID:

kill 12345
kill -9 12345  # принудительное завершение

Используйте -9 только при необходимости, так как это не дает процессу выполнить корректное завершение.

Альтернативные инструменты и когда ps не подходит

ps полезен для снимков и детальных фильтров, но в реальном времени он уступает другим инструментам:

  • top — интерактивный мониторинг процессов по использованию CPU и памяти
  • htop — более удобный и настраиваемый интерактивный мониторинг
  • pgrep, pidof — быстрый поиск PID по имени
  • systemctl — управление системными службами
  • ss, netstat — для поиска процессов, использующих сеть

Пример: при анализе сетевых проблем ps сам по себе не покажет сетевые сокеты, используйте ss -plnt вместе с ps для корреляции процесса и порта.

Быстрый чеклист по ролям

Системный администратор:

  • Просмотреть все процессы: ps -ef
  • Найти высокий потребитель CPU: ps -eo pid,pcpu,pmem,cmd –sort=-pcpu | head
  • Убить зависший процесс: kill -15 PID, затем kill -9 при необходимости

Разработчик:

  • Найти процессы текущего пользователя: ps -u $(whoami)
  • Показать дерево процессов: ps -f –forest -u $(whoami)
  • Отладка: ps -L PID для потоков

DevOps:

  • Мониторинг контейнеров и служб: ps aux | grep containerd или systemctl status
  • Сопоставление PID с cgroup: ps -eo pid,cgroup,cmd

Шпаргалка по часто используемым флагам

ФлагЗначение
-A, -eВсе процессы
-aПроцессы, не связанные с терминалом
-TПроцессы текущего терминала
-N, –deselectИнвертировать выбор
-oНастроить столбцы и названия
-u userПроцессы пользователя
-U userПроцессы для UID
-C nameПоиск по имени процесса
-LПоказать потоки
-f, -ef, -eFПолный формат
–forestДерево процессов

Ментальные модели и принятие решений

  • Если нужна один раз снять снимок состояния — используй ps.
  • Если нужен интерактивный мониторинг — переходи на top или htop.
  • Если нужно найти PID по имени — используй pgrep/pidof, а не парсинг вывода ps.
  • При подозрении на утечки памяти или CPU — сортируй вывод по использованию и анализируй родителя процесса.

Методология быстрой диагностики с ps

  1. Снять снимок всех процессов: ps -ef
  2. Отсортировать по CPU: ps -eo pid,ppid,pcpu,pmem,cmd –sort=-pcpu | head -20
  3. Найти родительский процесс и дерево: ps -f –forest -p PID
  4. Если нужно, получить потоки: ps -L PID
  5. Завершить процесс корректно: kill PID, при отказе kill -9 PID

Когда ps может подвести

  • Для длительного наблюдения ps неудобен, он не обновляет список автоматически.
  • ps показывает только то, что доступно текущему пользователю; без прав root вы не увидите процессы других пользователей в полном объеме.

Краткое руководство по безопасности

  • Не публикуйте вывод ps с системными путями и именами процессов в открытых логах без обфускации, это может раскрыть архитектуру и версии ПО.
  • Для аудита привилегий используйте вывод UID и PPID, сопоставляя их с ожидаемыми сервисами.

Факт-бокс

  • ps — часть набора procps в большинстве дистрибутивов Linux.
  • ps возвращает статический снимок процесса в момент вызова.
  • Для динамики используйте топ или htop.

Критерии приёмки

  • Можно получить список всех процессов: ps -A или ps -e
  • Можно фильтровать по пользователю: ps -u username
  • Можно показать дерево процессов: ps -f –forest
  • Можно переименовать заголовки столбцов и выбрать произвольные поля с -o

Заключение

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

Итоговый совет: используйте ps для снимков и конкретных фильтров, а для постоянного мониторинга переходите на интерактивные инструменты.

Сводка

  • ps даёт статичный снимок процессов в системе
  • Комбинируйте ps с grep, pgrep, top, htop для разных задач
  • Используйте -o для кастомного вывода и –forest для дерева процессов
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

32‑бит против 64‑бит Windows: что выбрать
Windows

32‑бит против 64‑бит Windows: что выбрать

Как скрывать данные в Excel — полное руководство
Productivity

Как скрывать данные в Excel — полное руководство

Удалить комментарии в Microsoft Word — руководство
Руководство

Удалить комментарии в Microsoft Word — руководство

Отключить подтверждения прочтения в Outlook
Почта

Отключить подтверждения прочтения в Outlook

Чек‑лист в Excel: пошаговое руководство
Excel

Чек‑лист в Excel: пошаговое руководство

Сноски и концевые сноски в Word — как добавить и настроить
Microsoft Word

Сноски и концевые сноски в Word — как добавить и настроить