Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
22
Добавлен:
05.06.2015
Размер:
86.53 Кб
Скачать

43. Системные процессы. Понятие процесса в Linux. Команды ps и top.

При запуске нового приложения (программы) ставиться новая задача, задача провоцирует запуск одного или нескольких процессов в оперативной памяти компьютера. Для полного понимание определим два новых термина: задача и процесс. Задача – это приложение, которое можно запустить и которой можно управлять в операционной системе. Процесс – это программа, которая возникает в оперативной памяти компьютера при постановке задачи. Процессы вызываются не только действиями пользователей в результате постановки задачи пользователя. Система также запускает свои процессы, как называемые демоны. Демоны – программы, которые работают непрерывно, обрабатывая периодические служебные запросы. Например, демон dtlogin контролирует регистрацию пользователей в системе. Каждому процессу назначается уникальный идентификационный номер (PID – process identification data), через который ядро системы следит за процессом и управляет им. PID представляет собой номер, который позволяет пользователю следить за процессом и оказывать на него воздействие. Ядро системы должно знать, что конкретному процессу разрешено. Для этого оно проверяет сведения о нем: сверяет UID (user identification data) и GID (group identification data) процесса, которые полностью совпадают с UID и PID пользователя, запустившего процесс. Когда запускается процесс, сначала создается его дубликат. При этом новый процесс называется дочерним, а процесс, который его породил – родительским. Потом дочерний процесс замещает копию кода, который создал родительский процесс, тем кодом, который сам дочерний процесс готовиться запустить. Пока выполняется приложение, оболочка ждет завершение дочернего процесса. По окончанию работы программы родительский процесс завершает дочерний процесс и ждет новую команду.

Команда ps. Просмотр процессов осуществляется командой ps (process status), которые выполняются в текущий момент. Команда ps выводит следующие сведения о процессе: идентификатор процесса PID, идентификатор терминала TTY, суммарное время выполнения процесса TIME, а также команду, которой был вызван процесс CMD. Формат команды: ps параметр(ы) . В таблице 8 приведены параметры команды ps.

Таблица 8 – Параметры команды ps

**********beg******************

Параметр

Описание

-aux

Отображение полного перечня процессов в системе.

-e

Выводится информация о каждом процессе в системе: PID, TTY, TIME, CMD.

-f

Выдается подробный вывод. Наряду с данными по опции –e также выводится информация UID (владелец процесса), PPID (ID родительского процесса) и STIME (время запуска процесса).

**********end******************

Если в столбце TTY стоит знак вопроса, то это означает принадлежность процесса к системному.

Таблица 9 – Описание полей данных при использовании команды ps

**********beg******************

Столбец

Описание

UID

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

PID

Уникальный идентификатор процесса

PPID

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

C

Использование процессорного времени. Используется при выводе данных по команде top .

STIME

Время запуска процесса (МесяцДень)

TTY

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

TIME

Суммарное время работы процесса.

CMD

Имя команды, которая породила процесс.

**********end******************

Надо оговориться, что время исполнения процесса в памяти компьютера не совпадает с реальным текущим временем. Это связано с большим количеством процессов и не равными правами (приоритетами) между ними. Поиск нужного процесса можно осуществить с помощью команд ps, grep и программного канала. Например, найдем все процессы, которые начинаются на букву «l». Апострофы можно опустить.

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

[Vidolob@srv01 ~]$ top

top - 14:41:58 up 97 days, 1:36, 0 users, load average: 2.89, 3.37, 3.33

Tasks: 864 total, 4 running, 842 sleeping, 3 stopped, 15 zombie

Cpu(s): 2.5%us, 7.8%sy, 8.3%ni, 80.8%id, 0.4%wa, 0.0%hi, 0.1%si, 0.1%st

Mem: 37151296k total, 24254288k used, 12897008k free, 298744k buffers

Swap: 40861316k total, 6081820k used, 34779496k free, 6627400k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

1418 abochkov 35 10 4067m 3.9g 16m R 100 11.0 120:51.99 calibre64

15467 Podoprig 18 0 226m 37m 10m R 96 0.1 1764:44 krusader

1 строка - общая информация (top)

Первая строка выводит данные по порядку:

-текущее время (11:37:19)

-время работы системы (up 1 day, 1:25)

-количество открытых пользовательских сессий (3 users)

-среднюю загрузку системы (load average: 0.02, 0.12, 0.07), три значения соответствуют загрузке в последнюю минуту, пять минут и пятнадцать минут соответственно

2 строка - статистика процессов (task)

Вторая строка выводит следующие данные:

-общее количество процессов в системе (73 total)

-количество работающих в данный момент процессов (2 running)

-количество ожидающих событий процессов (71 sleeping)

-количество остановленных процессов (0 stopped)

-количество процессов, ожидающих родительский процесс для передачи статуса завершения (0 zombie)

3 строка - статистика использования центрального процессора (cpu)

В третьей строке приводится информация об использовании центрального процессора. Если вы просуммируете все значения, в результате у вас должно получиться 100%. Давайте рассмотрим предназначение полей этой строки по порядку:

-процент использования центрального процессора пользовательскими процессам (0.3%us)

-процент использования центрального процессора системными процессами (0.0%sy)

-процент использования центрального процессора процессами с приоритетом, повышенным при помощи вызова nice (0.0%ni)

-процент использования центрального процессора процессами, ожидающими завершения операций ввода-вывода (0.0%wa)

-процент использования центрального процессора обработчиками аппаратных прерываний (0.3%hi - Hardware IRQ (аппаратные прерывания))

-процент использования центрального процессора обработчиками программных прерываний (0.0%si - Software Interrupts (программные прерывания))

-количество ресурсов центрального процессора "заимствованных" у виртуальной машины гипервизором для других задач (таких, как запуск другой виртуальной машины); это значение будет равно нулю на настольных компьютерах и серверах, не использующих виртуальные машины (0.0%st - Steal Time (заимствованное время)).

4 и 5 строки - статистика использования памяти (memory usage)

В четвертой и пятой строке выводится информация об использовании физической оперативной памяти и раздела подкачки соответственно. Значения в порядке следования: общее количество памяти (2057720k total), количество используемой памяти (778860k used), количество свободной памяти (1279160k free), количество памяти в кэше буферов (31976k buffers). Статью, описывающую эти параметры в подробностях, вы можете прочитать по ссылке.

Команда pgrep. Данная команда является более эффективным способом поиска процесса по имени. Команда pgrep отображает PID процесса, который соответствует шаблону поиска в командной строке. Например, отобразим PID процесса lp.

С командой pgrep используются следующие параметры.

Таблица 10 – Параметры команды pgrep

Параметр

Описание

-x

Выводятся PID, полностью совпадающие с шаблоном.

-n

Выводятся только более новые PID, чем тот, что соответствует шаблону. Выводится ID процесса, соответствующего шаблону.

-U

Отображаются PID, которые принадлежат заданному пользователю. Требуется задать только имя пользователя.

-l

Наряду с PID процесса выводится его имя.

Соседние файлы в папке KTNI_Kozlov_otvety