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

В многозадачных операционных системах вроде Linux процессы составляют основу работы системы. Часто необходимо получить список запущенных процессов для мониторинга, поиска утечек ресурсов или отладки. Команда ps — стандартный инструмент для этого: она показывает статус процессов и позволяет гибко управлять форматом вывода.
Что такое команда ps
Процесс — это запущенная программа, базовый элемент выполнения в Linux. Любое приложение запускает один или несколько процессов: от тяжёлых видеоредакторов до простых утилит типа mv. Команда ps, сокращение от process status, выводит список процессов и дополнительные поля, помогающие понять, кто, когда и как использует ресурсы системы.
Определения на одну строку:
- Процесс: экземпляр запущенной программы с собственными ресурсами и идентификатором PID.
- Поток: лёгкая единица выполнения внутри процесса, может существовать несколько потоков на процесс.
Синтаксис
Базовый синтаксис простой:
ps [options]Если запустить 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, время запуска, приоритет и дополнительные флаги.
Полезные поля, которые можно запросить:
- 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 -axBSD-формат аргументов
Некоторые администраторы привыкли к BSD-стилю без дефисов. Эквивалент -A в BSD-формате — au:
ps auГде a означает all, u — show user-oriented format.
Полный формат вывода
Для подробного вывода используйте -ef или -eF:
ps -ef
ps -eFВывод в полном формате обычно включает:
- UID: пользователь, запустивший процесс
- PID: идентификатор процесса
- PPID: PID родителя
- C: информация о планировщике и использовании CPU
- STIME: время старта процесса
- TTY: терминал
- TIME: суммарное время CPU
- CMD: команда запуска
Процессы пользователя
Флаг -u показывает процессы, запущенные указанным пользователем:
ps -u usernameПроцессы root
Чтобы увидеть процессы пользователя root, используйте -U и -u:
ps -U root -u rootПолучить PID процесса по имени
Флаг -C ищет процессы по имени и выводит их PID:
ps -C process-nameПример для bash:
ps -C bashСписок потоков процесса
Процессы могут содержать несколько потоков. Флаг -L в комбинации с PID показывает все потоки процесса:
ps -L pid
ps -L 1250Процессы по группе
Чтобы увидеть процессы, связанные с группой, используйте -fG с именем или идентификатором группы:
ps -fG groupname
ps -fG groupidПример:
ps -fG sudoers
ps -fg 1000Дерево процессов
Для древовидного представления используйте опцию –forest вместе с форматным выводом (-f):
ps -f --forest -C bashЭто покажет иерархию процессов bash и дочерних процессов.
Советы по использованию и сценарии
Важно: 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
- Снять снимок всех процессов: ps -ef
- Отсортировать по CPU: ps -eo pid,ppid,pcpu,pmem,cmd –sort=-pcpu | head -20
- Найти родительский процесс и дерево: ps -f –forest -p PID
- Если нужно, получить потоки: ps -L PID
- Завершить процесс корректно: 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 для дерева процессов
Похожие материалы
32‑бит против 64‑бит Windows: что выбрать
Как скрывать данные в Excel — полное руководство
Удалить комментарии в Microsoft Word — руководство
Отключить подтверждения прочтения в Outlook
Чек‑лист в Excel: пошаговое руководство