Команда ps

ВLinux запу­щен­ный экзем­пляр про­грам­мы назы­ва­ет­ся про­цес­сом. Ино­гда при рабо­те на ком­пью­те­ре с Linux вам может пона­до­бить­ся узнать, какие про­цес­сы запу­ще­ны в дан­ный момент.

Есть несколь­ко команд, кото­рые вы може­те исполь­зо­вать, что­бы най­ти инфор­ма­цию о запу­щен­ных про­цес­сах, ps и top явля­ют­ся наи­бо­лее часто исполь­зу­е­мы­ми из них.

В этой ста­тье мы пого­во­рим о том, как исполь­зо­вать коман­ду ps для отоб­ра­же­ния теку­щих запу­щен­ных про­цес­сов и отоб­ра­же­ния инфор­ма­ции об этих процессах.

 

Общий син­так­сис коман­ды ps выгля­дит сле­ду­ю­щим образом:

 

По исто­ри­че­ским при­чи­нам и из сооб­ра­же­ний сов­ме­сти­мо­сти коман­да ps при­ни­ма­ет несколь­ко раз­лич­ных типов параметров:

  • Опции сти­ля UNIX, перед кото­ры­ми сто­ит одна черточка.
  • Вари­ан­ты сти­ля BSD, исполь­зу­е­мые без тире.
  • Длин­ные опции GNU, начи­на­ю­щи­е­ся с двух тире.

 

Все типы опций могут быть сме­шан­ны­ми, но в неко­то­рых осо­бых слу­ча­ях могут воз­ни­кать кон­флик­ты, поэто­му луч­ше при­дер­жи­вать­ся одно­го типа опций. Опции BSD и UNIX могут быть сгруппированы.

В про­стей­шей фор­ме, когда исполь­зу­ет­ся без какой-либо опции, ps будет напе­ча­та­но четы­ре столб­ца инфор­ма­ции для мини­мум двух про­цес­сов, запу­щен­ных в теку­щей обо­лоч­ке, самой обо­лоч­ки и про­цес­сов, кото­рые выпол­ня­ют­ся в обо­лоч­ке при выпол­не­нии команды.

Вывод вклю­ча­ет в себя инфор­ма­цию о shell (bash) и про­цес­се, запу­щен­ном в этой обо­лоч­ке (вве­ден­ная вами коман­да ps):

Четы­ре колон­ки поме­че­ны PIDTTY, TIMEи CMD.

  • PID- Иден­ти­фи­ка­тор про­цес­са. В боль­шин­стве слу­ча­ев при запус­ке psко­ман­ды наи­бо­лее важ­ной инфор­ма­ци­ей, кото­рую ищет поль­зо­ва­тель, явля­ет­ся иден­ти­фи­ка­тор про­цес­са. Зна­ние PID поз­во­ля­ет убить сбой­ный процесс.
  • TTY – Назва­ние управ­ля­ю­ще­го тер­ми­на­ла для процесса.
  • TIME – Сово­куп­ное вре­мя ЦП про­цес­са, пока­зан­ное в мину­тах и секундах.
  • CMD – Имя коман­ды, кото­рая исполь­зо­ва­лась для запус­ка процесса.

 

Вывод выше не очень поле­зен, так как он не содер­жит мно­го инфор­ма­ции. Насто­я­щая сила коман­ды ps появ­ля­ет­ся при запус­ке с допол­ни­тель­ны­ми опциями.

Коман­да ps при­ни­ма­ет огром­ное коли­че­ство опций, кото­рые мож­но исполь­зо­вать для отоб­ра­же­ния опре­де­лен­ной груп­пы про­цес­сов и раз­лич­ной инфор­ма­ции о про­цес­се, но для повсе­днев­но­го исполь­зо­ва­ния тре­бу­ет­ся лишь несколь­ко из них.

Коман­да ps чаще все­го исполь­зу­ет­ся со сле­ду­ю­щей ком­би­на­ци­ей параметров:

Фор­ма BSD:

 

  • Опция a ука­зы­ва­ет ps выве­сти на дис­плей про­цес­сы всех поль­зо­ва­те­лей, за исклю­че­ни­ем тех про­цес­сов, кото­рые не свя­за­ны с тер­ми­на­лом и про­цес­са­ми груп­пы лидеров.
  • В u – под­став­ки для ори­ен­ти­ро­ван­ных на поль­зо­ва­те­ля фор­ма­те, кото­рый обес­пе­чи­ва­ет подроб­ную инфор­ма­цию о процессах.
  • Опция x в ps пере­чис­ля­ет про­цес­сы без управ­ля­ю­ще­го тер­ми­на­ла. В основ­ном это про­цес­сы, кото­рые запус­ка­ют­ся во вре­мя загруз­ки и рабо­та­ют в фоно­вом режиме.

Коман­да будет отоб­ра­жать инфор­ма­цию в один­на­дца­ти столб­цах USERPID, %CPU, %MEMVSZRSSSTATSTARTTTY, TIMEи CMD.

 

Мы уже объ­яс­ни­ли мет­ки PID, TTY, TIMEи CMD. Вот объ­яс­не­ние дру­гих меток:

  • Коман­ды, име­на кото­рых заклю­че­ны в квад­рат­ные скоб­ки, в дей­стви­тель­но­сти яв­ляются не коман­да­ми, а пото­ка­ми ядра, запла­ни­ро­ван­ны­ми в каче­стве про­цес­сов

    Еще один полез­ный набор аргу­мен­тов коман­ды ps для систем Linux и AIX — lax, предо­став­ля­ю­щий допол­ни­тель­ную тех­ни­че­скую инфор­ма­цию. Клю­чи a и x опи­са­ны выше (отоб­ра­жа­ют все роцес­сы), а ключ l озна­ча­ет выбор “длин­но­го” фор­ма­та выво­да дан­ных. Коман­да ps lax выпол­ня­ет­ся быст­рее, чем коман­да ps аuх, так как не со постав­ля­ет иден­ти­фи­ка­то­ры про­цес­сов с име­на­ми поль­зо­ва­те­лей. Это может ока­зать­ся весь­ма важ­ным фак­то­ром, если систе­ма уже пере­гру­же­на каким-то процессом.

     

    USER Имя вла­дель­ца процесса
    PID Иден­ти­фи­ка­тор процесса
    %CPU Доля вре­ме­ни цен­траль­но­го про­цес­со­ра (в про­цен­тах), выде­лен­ная процессу
    %MEM Часть реаль­ной памя­ти (в про­цен­тах), исполь­зу­е­мая процессом
    VSZ Вир­ту­аль­ный раз­мер процесса
    RSS Раз­мер рези­дент­но­го набо­ра (коли­че­ство стра­ниц памяти)
    TTY Иден­ти­фи­ка­тор управ­ля­ю­ще­го терминала
    STAT Теку­щий ста­тус процесса:
    R — выполняется
    D — ожи­да­ет запи­си на диск
    S — неак­ти­вен (< 20 с)
    T — приостановлен
    Z — зомби
    Допол­ни­тель­ные флаги:
    W — про­цесс выгру­жен на диск
    < — про­цесс име­ет повы­шен­ный приоритет
    N — про­цесс име­ет пони­жен­ный приоритет
    L — неко­то­рые стра­ни­цы бло­ки­ро­ва­ны в опе­ра­тив­ной памяти
    s — про­цесс явля­ет­ся лиде­ром сеанса
    TIME Коли­че­ство вре­ме­ни цен­траль­но­го про­цес­со­ра, затра­чен­ное на выпол­не­ние процесса
    COMMAND Имя и аргу­мен­ты команды

Что­бы напе­ча­тать дере­во про­цес­сов, добавь­те опцию f. Это ука­жет ps отоб­ра­зить дре­во­вид­ное пред­став­ле­ние дочер­них процессов.

Коман­да ps так­же поз­во­ля­ет вам сор­ти­ро­вать вывод. Напри­мер, что­бы отсор­ти­ро­вать вывод на осно­ве исполь­зо­ва­ния памя­ти, вы бы использовали:

фор­ма UNIX:

 

  • Опция e ука­зы­ва­ет ps отоб­ра­зить все процессы.
  • f – пол­но­фор­мат­ный спи­сок, кото­рый содер­жит подроб­ную инфор­ма­цию о процессах.

 

Коман­да будет отоб­ра­жать инфор­ма­цию в столб­цах UID, PID, PPID, C, STIME, TIME и CMD.

Мет­ки, кото­рые еще не объ­яс­не­ны, име­ют сле­ду­ю­щее значение:

  • UID – То же USER, что и поль­зо­ва­тель, кото­рый запус­ка­ет процесс.
  • PPID – Иден­ти­фи­ка­тор роди­тель­ско­го процесса.
  • C- То же %CPU, что про­цесс загруз­ки процессора.
  • STIME- То же START, что и вре­мя нача­ла команды.

Что­бы уви­деть толь­ко про­цес­сы, запу­щен­ные от име­ни опре­де­лен­но­го поль­зо­ва­те­ля, исполь­зуй­те сле­ду­ю­щую коман­ду, где andreyex ука­за­но имя пользователя:

 

Опция o поз­во­ля­ет ука­зать, какие столб­цы будут отоб­ра­жать­ся при выпол­не­нии коман­ды ps.

Напри­мер, что­бы напе­ча­тать инфор­ма­цию толь­ко о PID и COMMAND вы бы выпол­нить одну из сле­ду­ю­щих команд:

 

 

## Исполь­зо­ва­ние коман­ды ps может исполь­зо­вать­ся в соче­та­нии с дру­ги­ми коман­да­ми через тру­бо­про­вод. Если вы хоти­те отоб­ра­зить вывод коман­ды ‘ps’, по одной стра­ни­це за раз пере­дай­те его в коман­де less:

 

Выход­ные дан­ные коман­ды ‘ps’ могут быть отфиль­тро­ва­ны с помо­щью grep, напри­мер, что­бы пока­зать толь­ко про­цесс, при­над­ле­жа­щий поль­зо­ва­те­лю root, вы долж­ны запустить:

 

Коман­да ps явля­ет­ся одной из наи­бо­лее часто исполь­зу­е­мых команд при устра­не­нии непо­ла­док в систе­мах Linux. Она име­ет мно­го вари­ан­тов, но, как пра­ви­ло, боль­шин­ство поль­зо­ва­те­лей исполь­зу­ют либо ps aux или ps -ef для сбо­ра инфор­ма­ции о запу­щен­ных процессах.