Файл: Министерство образования и науки российской федерации университет итмо д. А. Зубок, А. В. Маятин.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 309
Скачиваний: 1
СОДЕРЖАНИЕ
Виртуальная среда для выполнения лабораторных работ
Лабораторная работа №1. Основы использования консольного интерфейса ОС GNU/Linux.
Задание на лабораторную работу
Лабораторная работа №2. Обработка текстовых потоков в ОС GNU/Linux
Управление вводом-выводом команд (процессов)
Работа со строками (внутренние команды bash)
Работа со строками (внешние команды)
Задание на лабораторную работу
Лабораторная работа №3. Мониторинг процессов в ОС
Получение общих сведений о запущенных процессах
Получение детальных сведений о запущенных процессах
Получение данных об оперативной памяти
Задание на лабораторную работу
ProcessID=PID : Parent_ProcessID=PPID : Average_Time=avg_atom.
Лабораторная работа №4. Управление процессами в ОС
Директивы (команды) объединения команд
Команды для управления процессами
минута час день_месяца месяц день_недели команда
Организация взаимодействия двух процессов
Задание на лабораторную работу
Лабораторная работа №5. Работа с файлово-каталожной системой в ОС GNU/Linux
Основные команды для работы с файлами и каталогами
Задание на лабораторную работу
Лабораторная работа №6. Консольный интерфейс ОС
Основные команды, необходимые для выполнения лабораторной работы:
if [not] errorlevel число команда [else команда]
if [not] строка1==строка2 команда [else команда]
if [not] exist имя_файла команда [else команда]
for {%переменная | %%переменная} in (множество) do
-
Посчитать количество процессов, запущенных пользователем user, и вывести в файл пары
PID:команда для таких процессов.
-
Вывести на экран PID процесса, запущенного последним (с последним временем запуска). -
Вывести в файл список PID всех процессов, которые были запущены командами, расположенными в /sbin/ -
Для каждого процесса посчитать разность резидентной и разделяемой части памяти процесса (в страницах). Вывести в файл строки вида PID:разность, отсортированные по убыванию этой разности. -
Для всех зарегистрированных в данный момент в системе процессов выведите в один файл строки
ProcessID=PID : Parent_ProcessID=PPID : Average_Time=avg_atom.
Значения PPid и Pid возьмите из файлов status, значение avg_atom из файлов sched, которые находятся в директориях с названиями, соответствующими PID процессов в /proc .
Отсортируйте эти строки по идентификаторам родительских процессов.
-
В полученном на предыдущем шаге файле после каждой группы записей с одинаковым идентификатором родительского процесса вставить строку вида Average_Sleeping_Children_of_ParentID=N is M,
где N = PPID, а M – среднее, посчитанное из SleepAVG для данного процесса.
-
Предъявите скрипты преподавателю и получите вопрос или задание для защиты лабораторной работы. -
После защиты лабораторной работы удалите созданный каталог со всем его содержимым (rm –R lab3)
Лабораторная работа №4. Управление процессами в ОС
GNU/Linux
Рассматриваемые вопросы
-
Директивы объединения команд -
Команды для управления процессами -
Планирование времени запуска процессов -
Передача данных и управления между процессами
Методические рекомендации:
Основными задачами управления процессами в ОС GNU/Linux является управление приоритетами процессов, планирование запуска процессов по расписанию и организация обмена данными между процессами, например с помощью сигналов. Для автоматизации управления системные администраторы
создают управляющие скрипты. Последовательности команд в управляющих скриптах могут быть построены с помощью традиционных операторов процедурного программирования (условный оператор, оператор цикла), но часто используются специальные директивы объединения команд.
Директивы (команды) объединения команд
Командный интерпретатор bash поддерживает следующие директивы объединения команд:
команда1 | команда2 – перенаправление стандартного вывода,
команда1 ; команда2 – последовательное выполнение команд,
команда1 && команда2 – выполнение команды при успешном завершении предыдущей,
команда1 || команда2 – выполнение команды при неудачном завершении предыдущей,
команда1 $(команда2) – передача результатов работы команды 2 в качестве аргументов запуска команды 1,
команда 1 > файл – направление стандартного вывода в файл (содержимое существующего файла удаляется),
команда 1 >> файл – направление стандартного вывода в файл (поток дописывается в конец файла).
{
команда1 команда 2
} – объединение команд после директив || , && или в теле циклов и функций.
команда1 & – запуск команды в фоновом режиме (стандартный вход и стандартный выход не связаны с консолью, из которой запускается процесс; управление процессом возможно в общем случае только с помощью сигналов).
Команды для управления процессами
(с подробным описанием возможностей и синтаксисом команд можно ознакомиться в документации, доступной по команде man команда)
kill – передает сигнал процессу. Сигнал может передаваться в виде его номера или символьного обозначения. По умолчанию (без указания сигнала) передает сигнал завершения процесса. Идентификация процесса для команды kill производится по PID. Перечень системных сигналов, доступных в GNU/Linux, с указанием их номеров и символьных обозначений можно получить с помощью команды kill –l;
killall – работает аналогично команде kill, но для идентификации процесса использует его символьное имя, а не PID;
pidof – определяет PID процесса по его имени;
pgrep – определяет PID процессов с заданными характеристиками
(например, запущенные конкретным пользователем);
pkill – позволяет отправить сигнал группе процессов с заданными
характеристиками;
nice – запускает процесс с заданным значением приоритета. Уменьшение значения (повышение приоритета выполнения) может быть инициировано только пользователем root;
renice – изменяет значения приоритета для запущенного процесса. Уменьшение значения (повышение приоритета выполнения) может быть инициировано только пользователем root;
at – осуществляет однократный отсроченный запуск команды.
cron – демон, который занимается планированием и выполнением команд, запускаемых по определенным датам и в определенное время. Команды, выполняемые периодически, указываются в файле /etc/crontab (не через команду cron, а путем внесения строк в файл crontab или с
использованием одноименной команды crontab). Команды, которые должны быть запущены лишь однажды, добавляются при помощи at. Синтаксис строки в crontab подробно описан здесь:
Каждая команда в файле crontab занимает одну строку и состоит из шести полей: