Текущий контроль процессов: команда ps
Категория: Управление процессами | Автор: admin | 30-09-2009, 04:21 | Просмотров: 20996

Команда ps — основной инструмент, которым системный администратор пользуется для текущего контроля процессов. Версии этой команды различаются аргументами и выходным форматом, но, по сути, выдают одну и ту же информацию. Все версии можно разбить на два основных лагеря: системы семейства System V (Solaris, HP-UX) и системы семейства BSD (Red Hat, FreeBSD). Кроме того, поставщики могут настраивать эту команду с учетом конфигурации системы, так как она тесно связана с особенностями обработки процессов в ядре и поэтому часто отражает изменения в ядре.

С помощью команды ps можно получить информацию об идентификаторах, приоритете, управляющем терминале того или иного процесса и многое другое. Она также позволяет узнать о том, какой объем памяти использует процесс, сколько времени центрального процессора он затребовал, каково его текущее состояние (выполняется, остановлен, простаивает и т.д.). Процессы-зомби листинге команды ps обозначаются как <exiting> или <defunct>.

Администратор должен научиться понимать выходную информацию команды ps. Посмотрев на полученный листинг, можно определить (помимо всего прочего), какие процессы выполняются в системе, сколько ресурсов центрального процессора и памяти они используют и кому принадлежит каждый из них.

Команда ps стремительно усложнилась за последние несколько лет. Некоторые поставщики бросили попытки стандартизировать выходной формат этой команды и сделали ее полностью конфигурируемой. Проведя небольшую настройку, можно получить практически любые требуемые результаты. В Red Hat команда ps является настоящим хамелеоном и понимает наборы опций из целого ряда других систем. Имеется также специальная переменная среды, с помощью которой можно выбрать нужный набор.

Не пугайтесь подобной сложности: пусть это будет кошмаром разработчиков ядра, а не системных администраторов! Несмотря на частое применение команды ps, достаточно знать лишь несколько магических заклинаний.

В Red Hat и FreeBSD получить список всех процессов, выполняющихся в системе, можно с помощью команды ps aux. Ниже показаны результаты работы этой команды во FreeBSD (в Red Hat они будут немного другими).

% ps aux

USER

PID

%CPU

%MEM

VSZ

RSS

TT

STAT

STARTED

TIME

COMMAND

root

0

0.0

0.0

0

0

??

DLs

8:35 PM

0:00.06

(swapper)

root

1

0.0

0.0

208

120

??

Ss

8:35PM

0:00.20

init -s

root

2

0.0

0.0

0

12

??

DL

8:35PM

0:00.03

(pagedaemon)

root

46

0.0

0.0

160

112

??

Ss

8:37PM

0:01.45

syslogd

root

66

0.0

0.0

228

152

??

I

8:37PM

0:00.23

cron

root

75

0.0

0.0

236

104

??

IWs

8:37PM

0:00.02

lpd

root

100

5.5

0.0

204

92

??

Is

8:37PM

0:00.19

inetd

evi

1251

0.0

0.0

320

256

p8

Is+

1:50PM

0:00.47

-csh (csh)

evi

1517

0.0

0.0

128

64

p8

S+

3:17PM

0:00.03

man logger

evi

1520

0.0

0.0

332

224

p8

R+

3:17PM

0:00.04

ps aux

Описание каждого поля приводится в табл. 4.4.

Еще один полезный набор аргументов команды ps в Red Hat и FreeBSD — lax. Команда ps lax выдает более специализированную информацию и выполняется быстрее, поскольку не осуществляет сопоставления идентификаторов процессов с именами пользователей. Это может оказаться весьма важным фактором, если система уже серьезно загружена каким-то процессом. Ниже в сокращенном виде показаны результаты работы команды. Обратите внимание на дополнительные поля PPID (идентификатор родительского процесса), N1 (значение nice) и WCHAN (ресурс, которого ожидает процесс):

% ps lax

UID

PID

PPID

CPU

PRI

NI

VSZ

RSS

WCHAN

STAT

TT

TIME

COMMAND

0

0

0

0

-18

0

0

0

a5e6c

DLs

??

0:00.06

(swapper)

0

1

0

0

10

0

208

120

wait

Is

??

0:00.20

init -s

0

2

0

0

-18

0

0

12

a203c

DL

??

0:00.06

pagedaemon

0

46

1

0

2

0

160

112

select

Ss

??

0:01.47

syslogd

0

77

1

0

2

0

160

88

select

IKs

??

0:00.07

portmap

0

84

1

0

2

0

260

204

select

IWs

??

0:00.23

mountd

Таблица 4.4. Пояснения к выходной информации команды ps аих (во FreeBSD)

Поле

Содержимое

USER

Имя владельца процесса

PID

Идентификатор процесса

%CPU

Доля времени центрального процессора (в процентах), выделенная

 

данному процессу

%МЕМ

Часть реальной памяти (в процентах), используемая данным процессом

VSZ

Виртуальный размер процесса в килобайтах

RSS

Размер резидентного набора (количество страниц памяти размером

 

1 Кб)

тт

Идентификатор управляющего терминала

STAT

Текущий статус процесса:

 

R — выполняется

 

D — ожидает записи на диск

 

I — неактивен (< 20 с)

 

S — неактивен (> 20 с)

 

Т — приостановлен

 

Z — зомби

 

Дополнительные флаги:

 

> — процесс имеет повышенный приоритет

 

N — процесс имеет пониженный приоритет

 

< — процесс превысил программный лимит на использование памяти

 

А — процесс запросил замену произвольной страницы

 

S — процесс запросил замену страницы по принципу FIFO

 

V — процесс приостановлен на время выполнения вызова vfork

 

Е — процесс пытается выполнить вызов exit

 

L — некоторые страницы блокированы в оперативной памяти

 

X — процесс находится в состоянии трассировки или отладки

 

S — процесс является лидером сеанса (владельцем управляющего

 

терминала)

 

w — процесс выгружен на диск

 

+ — процесс находится в интерактивном режиме своего

 

управляющего терминала

STARTED

Время запуска процесса

TIME

Время центрального процессора, затребованное процессом

COMMAND

Имя и аргументы команды1

1 Список аргументов может быть неполным. Добавьте опцию ww, чтобы запретить усечение.

 

В Solaris и HP-UX получить информацию о выполняемых процессах можно с помощью команды ps -ef (она работает и в Red Hat):

% ps -ef

UID

PID

PPID

C

STIME

TTY

TIME

COMD

root

0

0

80

Dec 21

?

0:02

shed

root

1

0

2

Dec 21

?

4:32

/etc/init -

root

2

0

8

Dec 21

?

0:00

pageout

root

171

1

80

Dec 21

?

0:02

/usr/lib/sendmail -bd

trent

8482

8444

35

14:34:10

pts/7

0:00

ps -ef

trent

8444

8422

203

14:32:20

pts/7

0:01

-csh

Пояснения к этому листингу даны в табл. 4.5.

 

Таблица 4.5. Пояснения к выходной информации команды ps -ef (Solaris, HP-UX и Red Hat)

Поле

Содержимое

UID

Имя владельца процесса

PID

Идентификатор процесса

PPID

Идентификатор родительского процесса

С

Информация об использовании центрального процессора и планировании

STIME

Время запуска процесса

TTY

Управляющий терминал

TIME

Время центрального процессора, затребованное процессом

COMD

Команда и аргументы

 

Подобно команде ps lax в Red Hat и FreeBSD, ps -elf позволяет в системах семейства System V увидеть и другие интересные данные:

% ps –elf

F

S

UID

PID

PPID

C

P

NI

ADDR

SZ

WCHAN

TIME

COMD

19

T

root

0

0

80

0

SY

f00c2fd8

0

 

0:02

sched

8

S

root

1

0

65

0

20

ff26a800

88

ff2632c8

4:32

init -

8

S

root

142

1

41

1

20

ff2e8000

176

f00cb69

0:00

syslogd

Столбцы STIME и TTY здесь опущены, чтобы листинг уместился по ширине страницы; они идентичны столбцам, выдаваемым командой ps -ef. Поля листинга описаны в табл. 4.6

 

Таблица 4.6. Пояснения к выходной информации команды ps -elf (Solaris, HP-UX, IRIX и Red Hat)

Поле

Содержимое

F

Флаги процесса; возможные значения зависят от системы (редко используются системными администраторами)

S

Статус процесса:

О — в текущий момент выполняется

S — неактивен (ожидает события)

R — разрешен к выполнению

Т — остановлен или отлаживается Z — зомби

D — неактивен и не может быть прерван (обычно ожидает записи на диск)

С

Информация об использовании центрального процессора (применя­ется для планирования процессов)

P

Приоритет планирования (внутреннее значение ядра, отличается от значения nice)

NI

Значение nice или константа SY для системных процессов

ADDR

Адрес процесса в памяти

SZ

Число страниц, занимаемых процессом в оперативной памяти

WCHAN

Адрес ресурса, которого ожидает процесс

 



 (голосов: 2)
Версия для печати | Комментариев: 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.


 
Логин
Пароль
 

 
Locations of visitors to this page