/
Текст
Лабораторная работа №
4
(
2
часа)
Контроль и мониторинг процессов
Цели:
изучить средства контроля процессов в ОС
Linux
, получить базовые
навыки использования утилит
контрол
я процессов
в
Debian
GNU
/
Linux
.
Инструкции по выполнению
:
Загрузите ОС
Linux
, войдите в сеанс и
получите доступ к командной строке. Перед выполнением заданий
лабораторной работы ознакомьтесь с главой 12 «Контроль использования
системных ресурсов» книги «
L
inux
. Карманный справочник»
Скотта
Граннемана
и с главой
5
(с.
16
3) «
UNIX
и
Linux
. Руководство системного
администратора» Эви Немет и др. Внимательно прочитайте условие
лабораторной работы, выполните требуемые задания
, ответьте на
приведенные вопросы
и сост
авьте итоговый отчет по работе.
Перед
началом
работы
проверьте
,
установлены
ли
на
Вашей
машине
необходимые пакеты
(
strace
,
sysstat
)
.
В случае необходимости установите их.
В
Linux
рассматривается 3 типа процессов: интерактивные процессы,
пакетные процессы
и процессы
-
демоны. Далее в работе будут
рассматриваться интерактивные процессы.
Интерактивные процессы могут выполняться как процессы переднего
плана (
foreground
)
или могут быть переведены в фоновый режим
(
background
). Фоновые процессы приостанавливаются,
возвращают
управление терминалом родительскому процессу приостановленного
процесса. Фоновые процессы также могут продолжать свою работу в
фоновом режиме, в том случае, если продолжение работы не требует
взаимодействия с терминалом.
Управление интерактивным
и процессами, или управление задачами,
позволяет процессу перемещаться между передним планом и фоновым
исполнением, перезапускаться в фоновом режиме, если это возможно или
перезапускаться как процесс переднего плана.
Для перемещения процесса в фоновый режи
м может использоваться
отправка сигнала сочетанием клавиш
<
Ctrl
+
Z
>
.
Выполните это действие для какого
-
либо интерактивного процесса,
например, процесса проверки корректности файловой системы. В каком
состоянии находится процесс? Продолжает ли он выполнение
и сколько
процессорного времени потребляет?
Для просмотра фоновых процессов может использоваться утилита
jobs
.
При помощи указанной утилиты проверьте состояние фоновых процессов.
Введите в терминале команду
bg
и повторите проверку. Что изменилось?
Отметьте
в отчете назначение команды
bg
. Попытайтесь выполнить команду
fg
. Что произошло в этом случае?
Нажмите
<
Ctrl
+
Z
>
еще раз, а затем
используйте команду
disown
-
a
. Что произошло?
Опишите по шагам, что будет результатом выполнения следующей
цепочки команд, вып
олненной в терминале:
nano
<
Ctrl
+
Z
>
bg
1
fg
1
<Ctrl+C>
Для управления приоритетом процессов в
Linux
используются команды
nice
,
renice
и, частично,
top
.
При помощи команд
nice
и
renice
выполните следующие задания:
1
)
определите текущее значение «фактора
nice
»
для выбранного
процесса;
2
)
определите результат выполнения команды
sudo
nice
-
n
-
10
gimp
nice
-
n
-
10
gimp
почему одна из них не работает?
3
)
определите результат выполнения команды
renice
+2
-
u
user
Изучение команды
ps
. Выполните команду
ps
с ключами,
позволя
ющими увидеть процессы всех пользователей и параметром
PPID
.
Отметьте в отчете командную строку, которую вы использовали.
Обратите внимание на поле
TTY
. Это поле показывает, где запущен
процесс. Если его значение «?», то он был запущен как часть процесса
и
нициализации системы без терминала. Для остальных процессов в качестве
терминала указано значение
tty
или
pts
с некоторым номером.
tty
задает
сессию, подключенную к стандартному потоку вывода, т.е. локальную для
данной системы.
pts
указывает на сессию, отк
рытую или удаленно
(например,
telnet
) или через графический терминал (например,
xterm
).
Задание. При помощи команды
ps
определите:
1
)
Количество процессов, работающих из
pts
.
2
)
Процесс, который больше всего использовал процессорного
времени Вашей системы.
3
)
Колич
ество процессов в состоянии
D
. Что это за состояние
процесса?
Просмотрите справку по команде
ps
. Что выведет на экран команда
ps
–
e
?
Какие процессы в выводе команды
ps
заключаются в
[]
?
Как
определить при помощи команды
ps
когда был запущен тот или иной
процесс?
При необходимости
динамического мониторинга процессов в системе
может использоваться команда
top
(
gtop
). Ознакомьтесь с работой этой
команды. Как с ее помощью изменить фактор уступчивости для процесса,
который чрезмерно занимает
CPU
?
Что будет вы
полнять
top
при следующих параметрах вызова:
а
)
top
-
d 5
b) top
-
u user
c) top
-
p 1024, 2048, 4096
d) top
-
n 10
e) top
-
b
-
n 12000 > somefile
После запуска команды
top
она может интерактивно управляться.
Определите, что будет происходить с выводом команды
при использовании
следующих сочетаний клавиш:
1
)
<Shift+N>
2
)
<Shift+P>
3
)
<Shift+M>
4
)
<Shift+T>
5
)
d
6
)
=
7
)
u
8
)
n
9
)
K
Обе команды, и
ps
, и
top
для получения информации используют
псевдофайловую систему
/
proc
. Укажите в отчете, какую информацию о
процессе можно извлечь из
/
proc
вручную и каким образом? Приведите
примеры получения информации о распределении памяти для процесса и
используемых им динамических библиотеках.
Кроме указанных выше программ для мониторинга работы процессов
могут быть полезны команды
vmstat
,
free
,
uptime
(
объясните чем),
pgrep
,
iostat
,
dstat
.
После определения источника проблем производительности в работе
системы при помощи команд
ps
и
top
и подобных им
, администратор может
принять необходимые меры при помощи команд
renice
и
/
или
kill
.
Тренинг: запустите не
сколько дополнительных ненужных процессов (в
качестве таковых отлично подойдут программы из каталогов
/
usr
/
games
или
/
usr
/
bin
). Проверьте на них действие команды
kill
с различными сигналами,
рассмотренными в лекции. Результаты тренировки отметьте в отчете.
Что произойдет при вводе команды
kill
-
1 [
PID
_
демона
]
Какому сигналу соответствует номер «1»? Каким
образом,
не
обращаясь к заголовочным файлам, используя только команду
kill
это можно
узнать?
Изучение команды
strace
. По доступной справочной документации
определите назначение этой команды. Как ее использовать? Какие ключи она
принимает?