Draw a vivid picture for the article, 16:9 widescreen aspect ratio

5816add6 97f9 4dda a4f0 1403c5edc14e HTML

В любой операционной системе во время работы запускается множество процессов, и командная утилита 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 позволяет эффективно управлять процессами, получать информацию о текущих задачах и обеспечивать контроль за ресурсами системы.

Оцените статью