Что такое утилита ps в Linux?

«Что такое утилита ps в Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

ps (process status) — это стандартная консольная утилита для отображения снимка информации о текущих запущенных процессах. В отличие от top или htop, она не обновляет данные в реальном времени, а показывает состояние на момент выполнения команды.

Наиболее часто используемые форматы вызова:

  1. ps aux — BSD-стиль. Показывает все процессы всех пользователей с детализацией.

    • a — процессы всех пользователей.
    • u — пользователь-ориентированный формат (показывает USER, %CPU, %MEM).
    • x — включает процессы без управляющего терминала (демоны).
  2. ps -ef — UNIX/SysV-стиль. Более стандартизированный, компактный вывод.

    • -e — все процессы.
    • -f — полный формат (показывает UID, PID, PPID, время запуска).

Пример вывода ps aux | head -5:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0 169316 13056 ?        Ss   Feb01   0:08 /sbin/init
root         2  0.0  0.0      0     0 ?        S    Feb01   0:00 [kthreadd]
www-data   745  0.0  0.2 321000 22500 ?        S    Feb01   0:15 nginx: worker process

Практическое применение:

  • Поиск процесса: ps aux | grep nginx
  • Просмотр дерева процессов: ps auxf или ps -ef --forest
  • Кастомный формат вывода: ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -10 (топ-10 процессов по потреблению памяти).
  • Проверка PID по имени: pgrep nginx или pidof nginx (альтернативы).

Ключевые поля вывода: PID (идентификатор), PPID (родительский PID), %CPU/%MEM (нагрузка), VSZ (виртуальная память), RSS (резидентная память), STAT (статус процесса, например, S — спящий, R — запущенный, Z — зомби), COMMAND (команда запуска).