⚙️ Паровой сервер ROADIT

Команда ps: латунный манометр твоего парового сервера

В машинном отделении любого сервера-паровика круглосуточно бурлит жизнь: крутятся шестерёнки cron-задач, шипят клапаны веб-демонов, перестукиваются поршни пользовательских скриптов. У опытного сисадмина всегда под рукой латунный манометр, позволяющий в любой момент заглянуть в эти кипящие недра. Имя ему — ps.

Эта утилита снимает мгновенный слепок давления в цилиндрах операционной системы — показывает, какие процессы работают прямо сейчас, сколько пара (ресурсов) они потребляют и кто запустил каждую турбину. Без ps администрировать паровой сервер — всё равно что регулировать клапаны на ощупь в кромешной тьме котельной. Одно неверное движение, и котёл уходит в разнос, а ты даже не понимаешь, какой именно демон перегрелся.

ps — не просто список программ. Это моментальная фотография всей механической жизни ядра. Захочешь прибить зависший вентиль через kill — сначала опроси манометр. Надо прикинуть, не слишком ли много рабочих тел расходует база данных — снова зови ps. Именно с этой латунной коробочки начинается любой инженерный анализ состояния паровой машины под названием Linux.



Синтаксис

Базовый вызов до смешного прост, хотя за ним скрываются три ветви опций, унаследованные от разных гильдий инженеров: Unix (с дефисом), BSD (без дефиса) и GNU (с двумя дефисами). В повседневной работе ты будешь смешивать их как шестерни разных модулей, лишь бы крутилось.

ps [опции]

Без аргументов выдаёт процессы, привязанные к твоему текущему терминалу — только верхушку айсберга.

Основные опции

Настоящий мастер медных труб обязан знать наизусть хотя бы этот джентльменский набор:

ОпцияОписаниеПример
-eПоказать все процессы в системе. Как открыть смотровое окно всей котельной разом.ps -e
-fПолный формат вывода. Добавляет колонки с PID родителя, временем запуска и полной командной строкой.ps -ef
-u <пользователь>Процессы конкретного владельца. Идеально, когда надо узнать, что именно крутит юзер steamworker.ps -u steamworker
auxBSD-заклинание, показывающее вообще все процессы с потреблением CPU и памяти. Строгий дефис здесь не нужен, это древняя магия.ps aux
--forestДревовидное представление. Рисует нити наследования процессов, как схему паропроводов от главного котла до отдалённых форсунок.ps aux --forest
-oЗаказной формат вывода. Ты сам выбираешь колонки, словно настраиваешь циферблат с нужными стрелками.ps -eo pid,user,%mem,comm --sort=-%mem
--sortСортировка по указанному полю. Со знаком минус — по убыванию. Например, --sort=-%cpu покажет самых прожорливых наверху.ps aux --sort=-%cpu

Этого арсенала хватит для 99% вылазок в машинный зал.

Примеры использования

Лучше один раз увидеть пар в действии, чем сто раз прочитать мануал.

Разведка всех котлов: кто пожирает память?

Классика жанра — мгновенно найти процессы, сжирающие оперативку, словно проржавевшая топка жрёт уголь.

ps aux --sort=-%mem | head -10

Ты увидишь колонки USER, PID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME и COMMAND. Первые строки — главные кандидаты на оптимизацию.

Именной фильтр: искать демона по имени

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

ps aux | grep nginx

Не пугайся — в выдаче окажется и сам процесс поиска grep. Опытный кочегар игнорирует эту строку автоматически.

Дерево наследования: от INIT-котла до последней форсунки

Когда нужно понять, какой процесс породил целую плеяду чад, используем --forest:

ps -ejH

или более читаемый BSD-вариант:

ps auxf

Ты увидишь, как от главного systemd или init ветвятся стволы systemd-сервисов, а от них побеги рабочих процессов — словно латунные трубы расходятся от центральной магистрали.

Собственная шкала: вывести только нужные параметры

Настоящий инженер сам собирает манометр под задачу. Скажем, нужны только PID, имя команды и процент CPU с сортировкой:

ps -eo pid,comm,%cpu --sort=-%cpu | head

Ключ -e даёт все процессы, а -o определяет столбцы: pid (идентификатор), comm (имя исполняемого файла), %cpu. Прелесть в том, что можно заказать десятки полей: ppid, rss, stat, etime — все они перечислены в секции STANDARD FORMAT SPECIFIERS мануала.

💡 Совет

Создай алиас для быстрой инспекции. Добавь в свой ~/.bashrc строку:

alias topmem='ps aux --sort=-%mem | head -15'

Теперь одного слова topmem достаточно, чтобы выявить обжор. А для поиска по имени пригодится функция:

psgrep() { ps aux | grep -v grep | grep "$@"; }

Кидай её туда же и используй как psgrep postgres. Меньше латунной пыли в глаза — быстрее результат.

⚡ Важно

Регистр имеет значение. BSD-опции (aux) и Unix-опции (-aux с дефисом) — не одно и то же. Команда ps -aux попытается найти пользователя с именем x, получит ошибку и выведет лишь часть списка. Запомни: хочешь увидеть все процессы с жирными колонками — смело набирай ps aux без дефиса. А если нужен строгий POSIX-стиль — используй ps -ef. Не смешивай две гильдии бездумно, иначе манометр покажет чепуху.



⚙️ Машинное отделение ROADIT благодарит за прочтение.

Больше команд, шпаргалок и обзоров — на roadit.ru и в нашем Телеграф-канале. 📋 Все команды

Оставьте комментарий