Командная строка: ps
просматриваем список процессов с помощью ps
Во время своей работы любой компьютер запускает множество процессов, просмотреть список которых можно с помощью команды ps
.
Для начала определимся, что такое процесс?
Процесс - это запущенный экземпляр программы.
В пределах одной системы пользователи могут запускать одинаковые программы. Кроме того, даже один пользователь в разных ситуациях может запускать несколько экземпляров одной и той же программы. Таким образом, в системе может существовать множество однотипных процессов, различить которые можно с помощью присваиваемого в момент запуска уникального идентификатора PID (Process Identifier).
Синтаксис команды 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
намного больше возможностей.
Чаще всего применяется сочетание опций ax
. Где опция 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)
123 ?? Ss 0:01.54 /System/Library/PrivateFrameworks/Uninstall.framework/Resourc
124 ?? Ss 0:07.91 /usr/libexec/kextd
125 ?? Ss 1:46.55 /System/Library/Frameworks/CoreServices.framework/Versions/A/
126 ?? Ss 0:00.08 /Library/Frameworks/OVPNHelper.framework/Versions/Current/usr
127 ?? Ss 0:00.56 /System/Library/PrivateFrameworks/MediaRemote.framework/Suppo
130 ?? Ss 0:00.08 /Library/Frameworks/OpenVPNConnect.framework/Versions/Current
131 ?? Ss 0:21.98 /usr/sbin/systemstats --daemon
132 ?? Ss 0:04.60 /usr/libexec/configd
133 ?? Ss 0:00.08 endpointsecurityd
134 ?? Ss 0:10.43 /System/Library/CoreServices/powerd.bundle/powerd
136 ?? Ss 0:00.05 nginx: master process /usr/local/opt/nginx/bin/nginx -g daemo
139 ?? Ss 0:10.87 /usr/libexec/logd
140 ?? Ss 0:00.16 /usr/libexec/keybagd -t 15
Как видно из полученного результата, длинные строки списка выводятся обрезанными. Чтобы избежать этого пригодятся еще и опции 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 --field-trial-handle=1718379636,15163398383114259674,12962946262237565502,131072 --enable-features=WebComponentsV0Enabled --disable-features=CookiesWithoutSameSiteMustBeSecure,SameSiteByDefaultCookies,SpareRendererForSitePerProcess --lang=en-US --service-sandbox-type=network --standard-schemes --secure-schemes=desktop-file --bypasscsp-schemes --cors-schemes --fetch-schemes=desktop-file --service-worker-schemes --shared-files --seatbelt-client=42
682 ?? S 0:00.04 /System/Library/PrivateFrameworks/CommunicationsFilter.framework/CMFSyncAgent
Утилита ядра grep
в сочетании с командой ps
позволяет выводить список процессов в соответствии с поставленными задачами:
~ % ps axww | grep "hugo server"
3007 s000 S+ 0:00.00 grep hugo server
1943 s004 S+ 0:55.58 hugo server -D
Список процессов выводится в нескольких столбцах:
-
PID
указывает на ID процесса, -
TT
указывает на ID терминальной сессии, -
STAT
показывает статус процесса, -
TIME
показывает время существования прцоесса, -
COMMAND
демонстрирует непосредственно саму запущенную команду.
Если говорить о статусах процессов STAT
, то они могут соответствовать одному из четырех значений:
-
I
является простаивающим процессом (не работает более 20 секунд), -
R
является запущенным процесс, -
S
является процессом спящим менее 20 секунд, -
T
является остановленным процессом, -
U
является процессом в непрерывном ожидании, -
Z
является процессом-зомби (мертвый процесс).
Значок +
в столбце STAT
указывает на лидирующий процесс, то есть процесс выполняемый на переднем плане.
Спасибо за внимание.