Ответ
ps (process status) — это стандартная консольная утилита для отображения снимка информации о текущих запущенных процессах. В отличие от top или htop, она не обновляет данные в реальном времени, а показывает состояние на момент выполнения команды.
Наиболее часто используемые форматы вызова:
-
ps aux— BSD-стиль. Показывает все процессы всех пользователей с детализацией.a— процессы всех пользователей.u— пользователь-ориентированный формат (показывает USER, %CPU, %MEM).x— включает процессы без управляющего терминала (демоны).
-
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 (команда запуска).
Ответ 18+ 🔞
А, ну это же классика, ёпта! ps — это как твой личный стукач в системе, который на раз-два сливает всю подноготную про то, какие процессы тут без дела шастают. Не то что эти top с их анимацией — тут всё чётко, по делу, один снимок и в дамки.
Самые ходовые комбинации, чтобы не выглядеть конём:
-
ps aux— стиль BSD, для тех, кто любит подробности. Показывает всё и про всех.a— процессы от всех юзеров, даже от того полупидора, который сидит на соседнем сервере.u— формат «для пользователя», чтобы видно было, кто сколько CPU и памяти хавает.x— подтягивает демонов и прочую нечисть, которая без терминала прячется.
-
ps -ef— стиль UNIX, более строгий и лаконичный. Как будто отчёт бухгалтера, без лишней воды.-e— опять же, все процессы.-f— полный формат, где видно кто кого породил (PPID — это ж родительский PID, ясень пень).
Вот, смотри, как это выглядит в жизни (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 — номер его папаши. %CPU/%MEM — насколько он жаден. VSZ — сколько виртуальной памяти нарисовал, RSS — сколько реально жрёт. STAT — статус: S спит, R бегает, Z — зомби, ходячий мертвец, который уже помер, но папаша про это не знает. COMMAND — собственно, что за команда эту всю вечеринку устроила.
В общем, инструмент простой, но овердохуища полезный. Запомни эти флаги, и волнение ебать пропадёт, когда система снова начнёт тупить.