В любой операционной системе во время работы запускается множество процессов, и командная утилита ps
позволяет получить их список и детальную информацию о них. Но сначала давайте разберемся, что же такое процесс.
Что такое процесс?
Процесс — это выполняющийся экземпляр программы. В рамках одной операционной системы возможно выполнение множества экземпляров одной и той же программы. Например, один и тот же пользователь может запускать одну и ту же программу несколько раз в разных ситуациях. Каждый процесс в системе идентифицируется уникальным идентификатором — PID (Process Identifier), который присваивается при его запуске.
Основы использования команды ps
Команда ps
имеет простой синтаксис:
ps
При выполнении этой команды выводится список процессов, запущенных текущим пользователем в текущей сессии терминала:
~ % ps
PID TTY TIME CMD
1938 ttys000 0:00.07 -zsh
623 ttys004 0:00.05 -zsh
1943 ttys004 0:47.25 hugo server -D
В приведенном примере пользователь имеет два запущенных процесса терминальной оболочки zsh
и один процесс сервера статических страниц hugo
.
Однако команда ps
в базовой форме выводит только процессы, принадлежащие текущему пользователю. Чтобы увидеть процессы других пользователей и системные процессы, используются дополнительные опции.
Расширенные возможности команды ps
Наиболее часто применяемыми являются опции a
и x
. Опция a
выводит процессы, принадлежащие другим пользователям, а опция x
— процессы, не привязанные к какому-либо терминалу, такие как системные демоны:
~ % ps ax
PID TT STAT TIME COMMAND
1 ?? Ss 2:17.04 /sbin/launchd
119 ?? Ss 0:02.15 /usr/sbin/syslogd
120 ?? Ss 0:02.68 /usr/libexec/UserEventAgent (System)
...
Вывод команды может содержать длинные строки, которые автоматически обрезаются. Чтобы избежать этого, можно использовать опции ww
, которые позволяют вывести полный текст команд:
~ % ps axww
679 ?? S 0:00.62 /Users/george75/Library/Application Support/Figma/FigmaAgent.app/Contents/MacOS/figma_agent -psn_0_196656
681 ?? S 0:08.22 /Applications/Figma.app/Contents/Frameworks/Figma Helper.app/Contents/MacOS/Figma Helper --type=utility --utility-sub-type=network.mojom.NetworkService ...
Фильтрация процессов с помощью grep
Для более точного поиска процессов можно комбинировать ps
с утилитой grep
, что позволяет выводить только те процессы, которые соответствуют определённым критериям:
~ % ps axww | grep "hugo server"
3007 s000 S+ 0:00.00 grep hugo server
1943 s004 S+ 0:55.58 hugo server -D
Структура вывода ps
Команда ps
выводит информацию в нескольких столбцах:
- PID — уникальный идентификатор процесса.
- TT — идентификатор терминальной сессии, с которой связан процесс.
- STAT — текущий статус процесса.
- TIME — общее время выполнения процесса.
- COMMAND — команда, которая запустила процесс.
Расшифровка статусов процессов
Значения в столбце STAT
могут варьироваться:
I
— простаивающий процесс (неактивен более 20 секунд).R
— выполняющийся процесс.S
— спящий процесс (менее 20 секунд).T
— остановленный процесс.U
— процесс в непрерывном ожидании.Z
— зомби-процесс (мертвый процесс).
Значок +
в столбце STAT
указывает на лидирующий процесс, который выполняется на переднем плане.
Использование команды ps
позволяет эффективно управлять процессами, получать информацию о текущих задачах и обеспечивать контроль за ресурсами системы.