Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСС - Процессы_U.doc
Скачиваний:
5
Добавлен:
20.11.2019
Размер:
230.4 Кб
Скачать

Информацию которую выводит команда top

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

По умолчанию процессы отсортированы по уровню загрузки процессора. Если необходимо изменить порядок сортировки, нужно нажать комбинацию клавиш Shift+o или Shift+f. После нажатия этой комбинации клавиш будет отображено окно в котором можно выбрать столбец по которому необходимо отсортировать таблицу. Например, чтобы отсортировать таблицу по объему занимаемой памяти нужно нажать комбинацию Shift+o, затем клавишу n и нажать Enter. Чтобы изменить порядок сортировки (убывание/возрастание), необходимо нажимать комбинацию Shift+r.

Чтобы получить краткую справку о программе top нужно нажать клавишу h.

Чтобы отобразить процессы определенного пользователя необходимо в работающей программе top нажать клавишу u и затем набрать имя учетной записи и нажать Enter. Чтобы снова отобразить все процессы нажимаем u и ничего не набирая нажимаем Enter.

Очень удобно программу top использовать для удаления процессов которые загружают систему. Такие процессы (загружающие процессор на 100%) будут по умолчанию вверху таблицы. Смотрим PID процесса, нажимаем клавишу k, пишем PID и нажимаем Enter. Затем пишем номер сигнала 9 и еще раз Enter

УПРАВЛЕНИЕ ПРОЦЕССАМИ

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

Команда top

Наиболее известной из таких команд является команда top. Для того чтобы увидеть все процессы, выполняющиеся в данный момент в системе, достаточно запустить команду top в следующем формате:

[user]$ top -ef

Команда

[user]$ top axf

позволяет увидеть все процессы в системе, с применением графического отображения отношения "предок-потомок". Впрочем, для того, чтобы увидеть "лес" деревьев "предок-потомок", лучше воспользоваться очень интересным аналогом команды top axf — командой toptree. Вывод этой команды позволяет увидеть "дерево" запущенных в вашей системе процессов. Перечислить здесь все опции команды top невозможно, воспользуйтесь для этого командой man top.

Команда top

Команда top позволяет сделать как бы "моментальный снимок" процессов, запущенных в системе. В отличие от top команда top отображает состояние процессов и их активность "в реальном режиме времени". На рисунке 1 изображено окно терминала, в котором запущена программа top.

Стандартный вывод команды top представлен в следующем листинге: [root@rhel5 ~]# top top - 00:22:15 up   1:38,   2 users,   load average: 0.00, 0.01, 0.10 Tasks: 106 total,     1 running, 105 sleeping,     0 stopped,     0 zombie Cpu(s):   0.3%us,   2.0%sy,   0.0%ni, 97.7%id,   0.0%wa,   0.0%hi,   0.0%si, 0.0%st

Mem: 385484k total, 380060k used, 5424k free, 15484k buffers Swap: 1052248k total, 4k used, 1052244k free, 252724k cached

PID

USER

PR

NI

VIRT

RES

SHR

S

%CPU

%MEM

TIME+

COMMAND

2852

root

15

0

146m

9308

5140

s

0.7

2.4

0:33.02

Xorg

2528

root

15

0

1872

472

392

s

0.3

0.1

0:00.83

gpm

2616

root

15

0

24848

11m

3260

s

0.3

3.1

0:04.80

yum-

updatesd ...........................................................................................................................................................................................................................................

2616

root

17

-5

0

0

0

s

0.0

0.0

0:00.0

cqueue/0

Вывод команды top.

Как видно из примера стандартный вывод команды top имеет несколько полей, каждое из которых содержит соответствующий атрибут процесса. Описание полей вывода команды top представлено в таблице

Поле

Описание

PID

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

PPID

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

USER

Идентификатор пользователя, запустившего процесс.

GROUP

Идентификатор группы, которой принадлежит процесс.

S

Состояние процесса.

PR

Приоритет процесса.

N1

Относительный приоритет процесса

TIME+, TIME

Количество процессорного времени, которое использует процесс с момента своего запуска.

VIRT

Полный объем виртуальной памяти, которую занимает процесс.

RES

Объем резидентной виртуальной памяти, которую занимает процесс.

SHR

Объем общей виртуальной памяти, которую использует процесс.

SWAP

Объем виртуальной памяти процесса, выгруженной на диск.

%CPU

Процент использования общего процессорного времени.

%MEM

Процент использования доступной физической памяти.

%MEM

Процент использования доступной физической памяти.

CMD

Команда, использованная для создания процесса.

Команда top имеет встроенную систему комбинаций клавиш, которая позволяет сортировать вывод по конкретным полям и управлять процессами. Для вывода справочной информации по клавишам необходимо нажать клавишу в процессе работы команды top. Для добавления определенного поля в общий вывод команды top необходимо нажать клавишу и отметить символом * поля, которые необходимо отображать. Вывод команды top схож с выводом команды top, однако он отображает статический снимок процессов. По умолчанию, команда top выводит только информацию о процессах, запущенных в текущей сессии командного интерпретатора bash. Для вывода информации по всем процессам необходимо ввести команду top с ключом -е. Для отображения желаемых полей необходимо ввести команду top с ключом -о поле1,поле2,... , где через запятую перечисляются поля, которые необходимо отобразить. Пример вывода команды top представлен в листингах 2.8 и 2.9.

$ nice -n 5 sleep 30

$ top lax | grep sleep F UID PID PPID PRI NI VSZ RSS WCHAN S TTY TIME COMMAND 0 1000 3567 3543 20 0 6292 3528 wait Ss /0 0:00 bash 0 1000 13098 3567 25 5 2952 628 hrtime SN /0 0:00 sleep 30

Синтаксис команды простой: через ключ -n мы передаем значение приращения nice-фактора, а затем идет команда для которой будет устанавливаться новый nice-фактор. Речь идет именно о приращении, так как реальный nice-фактор нового процесса будет равен nice-фактору родительского процесса сложенному с числом передаваемым команде nice. В приведенном выше примере nice-фактор родительского процесса (оболочки bash) равен нулю, значит nice-фактор дочернего будет 0+5=5, что мы и видим на результатах.

Обычные пользователи могут только увеличивать nice-фактор, но не могут его уменьшать. Сделано это для того, чтобы пользователи не смогли создавать высокоприоритетные процессы. Если от имени пользователя выполнить команду nice -n -5 sleep 30 &, получим сообщение об ошибке. Уменьшать nice-фактор может только пользователь root.

Если необходимо изменить nice-фактор уже запущенного процесса, то используют команду renice. Например:

$ renice 14 13229 13229: старый приоритет 10, новый приоритет 14

где 13229 это PID процесса для которого меняется nice-фактор. Из примера, также видно, что число 14 это уже не приращение, а просто новое значение nice-фактора.

Для информации (не выполнять)

Если необходимо изменить nice-фактор всех процессов одного пользователя, то используется ключ -u. Например, изменим nice-фактор всех процессов пользователя test:

test@adm-ubuntu:~$ top | grep test 4 1001 13256 5630 20 0 8656 3036 wait S 0:00 su - test 0 1001 13297 13266 20 0 3056 824 pipe_w S+ 0:00 grep –color=auto test test@adm-ubuntu:~$ renice 5 -u test 1001: старый приоритет 0, новый приоритет 5 test@adm-ubuntu:~$ top | grep test 4 1001 13256 5630 25 5 8656 3036 wait SN 0:00 su - test 0 1001 13302 13266 25 5 3056 820 pipe_w SN+ 0:00 grep –color=auto test

Для каких практических целей можно использовать nice-фактор? Например, если какие-то процессы занимают в данный момент большое количество процессорного времени, то для более быстрого определения проблемы можно запустить интерпретатор команд с более низким nice-фактором. Операции разного рода кодирования или сжатия, которые требуют много времени (часы), можно запускать с более высоким nice-фактором, чтобы не загружать систему. Быстродействие современных процессоров, таково, что к изменению nice-фактора прибегают все реже, но тем не менее иногда он может быть очень полезен.