- •«Московский технический университет связи и информатики» (мтуси)
- •1. Знакомство с командной строкой Linux 15
- •7. Ядро Linux 51
- •Цель и задачи курсовой работы
- •Введение
- •Краткая теория
- •Знакомство с командной строкой Linux
- •Работа с файлами и каталогами. Управление пользователями
- •Ядро Linux
- •Управление процессами
- •Управление памятью
- •Диски и файловые системы
- •Основная часть
- •Знакомство с командной строкой Linux
- •Команды top, free, ps
- •Домашний каталог
- •Создание директорий
- •Команда tree
- •Создание скриптов
- •Cкрипт на языке bash c выводом меню, состоящего из пунктов выбора выводимой информации.
- •Работа с файлами и каталогами. Управление пользователями
- •Ядро Linux
- •Анализ системных вызовов при выполнении команд с помощью утилиты strace.
- •Системные вызовы вашей̆ программы.
- •Сборка и загрузка модуля в ядро Linux.
- •Управление процессами
- •Мониторинг производительности системы
- •Создание скрипта для получения статистики
- •Создание автозапускаемой службы
- •Создание таймера
- •Управление памятью
- •Получение карты виртуальной памяти процесса
- •Настройка файла подкачки
- •Тестирование памяти
- •Изучение параметра swappiness
- •Диски и файловые системы
- •Разметка диска, создание файловой системы
- •Создание raid-массива
- •Получение информации о файловой системе
- •Работа с логическими разделами дисков (lvm)
- •Vgextend myvg /dev/sdg Добавлен второй диск в vg
- •Заключение
- •Используемая литература
Системные вызовы вашей̆ программы.
Составление двух программ:
start.sh – ведущая запись мониторинга вызовов целевой программы;
typer.sh – простая программа (typer.sh), которая делает суммарно пять записей в текстовом файле с интервалом в 1 секунду.
К сожалению, получить PID другого bash скрипта только по имени файла, из которого он был запущен, напрямую в bash невозможно. Вот почему: Bash не хранит эту информацию – Bash не отслеживает, из какого файла был запущен скрипт, кроме того, он может быть запущен просто как команда в командной строке, без запуска из файла.
Примененное решение: использован механизм именных каналов (named pipes) для передачи данных между скриптами. В первом скрипте мосоздан именованный канал, в другом - записан в него PID, а в первом чтение его.
Программа start.sh запускается с правами суперпользователя для доступа к вызовам запроса strace -p $typerpid -s 1024 -T -o exfile 2>&1. Из этой программы запускается typer.sh, в результате работы обеих программ остаются два новых текстовых файла:
exfile – в нем сохранен вывод команды strace;
lines – в нем можно посмотреть на записанные программой typer.sh строки.
Для Контроля работы программ, в терминал выводятся их PID для ручного завершения процесса в случае ошибок, также в текстовые файлы пишется вывод команды date для проверки.
Рисунок 4-3-9. Исходные коды написанных скриптов start.sh и typer.sh.
Рисунок 4-3-10. Результаты работы написанных скриптов start.sh и typer.sh: два новых текстовых файла: exfile и lines.
Рисунок 4-3-11. Содержимое файла lines.
Рисунок 4-3-12. Фрагмент содержимого файла exfile.
Выполнен разбор системных вызовов для программы typer.sh.
Таблица 4. Результаты анализа
№ |
Системный вызов |
Описание вызова |
Входные параметры |
Время выполнения, мкс |
Возвращаемое значение |
1. |
rt_sigprocmask |
Устанавливает или получает маску сигналов |
SIG_BLOCK, [CHLD], [], 8 |
0.000007 |
0 |
2. |
clone |
Создает новый процесс (клонирует текущий) |
hild_stack=NULL, flags=CLONE_CHILD_CLEARTID| CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x741dde75ba10 |
0.001052 |
3086 |
3. |
wait4 |
Ожидание завершения процесса |
1, {WIFEXITED(s) && WEXITSTATUS(s) == 0}, 0, NULL |
1.000251 |
3089 |
4. |
ioctl |
Управление устройством |
2, TIOCGWINSZ, {wsrow=55, wscol=137, wsxpixel=640, wsypixel=480} |
0.000008 |
0 |
5. |
rt_sigr-eturn |
Возврат из обработчика сигнала |
{mask=}
|
0.000008 |
0 |
6. |
rt_sigaction |
Установка обработчика сигнала |
SIGINT, {sahandler=0x5847f0913540, samask=, saflags=SARESTORER, sarestorer=0x741dde445320}, {sahandler=0x5847f08ed750, samask=[], saflags=SARESTORER, sarestorer=0x741dde445320}, 8 |
0.000008 |
0 |
wait4 - Этот системный вызов используется для ожидания завершения процесса. Он может использоваться для ожидания завершения конкретного процесса (с указанием PID) или для ожидания завершения любого дочернего процесса.
ioctl - Системный вызов для взаимодействия с устройствами. В этом случае он используется для получения информации о размере окна терминала.
clone - Системный вызов для создания нового процесса.
rt_sigaction - Системный вызов используется для установки обработчиков сигналов.
rt_sigprocmask - Системный вызов для управления маской сигналов.
rt_sigreturn - Системный вызов для возврата из обработчика сигнала.
Некоторые системные вызовы, такие как rt_sigaction и rt_sigprocmask, могут вызываться несколько раз в течение короткого периода времени. Время выполнения каждого вызова может отличаться в зависимости от используемого оборудования и нагрузки на систему.
