Добавил:
study@slavapmk.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Отчёт ЛР6

.docx
Скачиваний:
0
Добавлен:
11.05.2026
Размер:
811.3 Кб
Скачать

Министерство Цифрового Развития, Связи И Массовых

Коммуникаций Российской Федерации

Ордена Трудового Красного Знамени Федеральное

Государственное Бюджетное Образовательное Учреждение

Высшего Образования

«Московский Технический Университет Связи и Информатики» (МТУСИ)

Лабораторная работа №6

«Скрипты и планирование выполнения команд»

──────────────────────────────────────

Выполнил:

Студент группы БИН2406

Петров Вячеслав Андреевич

Проверил:

Ассистент кафедры ССиСК

Рогач Иван Сергеевич

Основы работы с UNIX-подобными операционными системами

Оглавление

Цель работы 3

Выполнение работы 4

Задание 1 4

Задание 2 5

Задание 3 6

Задание 4 6

Контрольные вопросы 7

В чем разница между использованием двойных и одиночных кавычек при задании строк? 7

Как запланировать выполнение скрипта каждые 15 минут, но только в рабочие дни? 7

Объясните, почему команды, работающие с пользовательским окружением, могут не работать через cron? 7

Как в скрипте реализовать обработку ошибок выполнения команды? 8

Какие риски связаны с автоматической перезагрузкой системы через скрипт? 8

Вывод 8

Цель работы

Ознакомиться с основами написания и выполнения Shell-скриптов. Изучить методы автоматизации задач с помощью планировщика cron, его настройку и использование для периодического выполнения команд в системе Linux.

Краткая теория

Все нижеприведенные команды справедливы для Ubuntu. В зависимости от дистрибутива команды могут видоизменяться.

at: Утилита предназначена для выполнения задач или команд в указанное время.

В Ubuntu Shell-скрипты можно выполнять различными способами. Каждый из них имеет особенности, связанные с контекстом, правами доступа и использованием интерпретатора. Рассмотрим их подробно:

Выполнение через явное указание интерпретатора

Этот способ используется, когда необходимо указать, какой интерпретатор следует использовать для выполнения скрипта.

Пример: bash script.sh

Выполнение с помощью команды ./

Этот метод используется для выполнения скриптов как самостоятельных программ, если у скрипта есть разрешение на выполнение.

Пример: ./script.sh

Выполнение с использованием sudo

Если скрипт требует привилегий суперпользователя, его необходимо запускать с помощью sudo. Однако, метод выполнения через sudo

./script.sh может быть проблематичным из-за особенностей обработки переменных среды. Рекомендуется использовать явное указание интерпретатора.

Пример: sudo bash script.sh

Выполнение через графические оболочки или планировщики

Скрипты могут быть выполнены через другие средства, такие как планировщики (например, cron.sh) или графические оболочки. В таких случаях важно указать полный путь к скрипту и интерпретатору.

Выполнение работы

Задание 1

Задание 2

Задание 3

Задание 4

Контрольные вопросы

В чем разница между использованием двойных и одиночных кавычек при задании строк?

В Bash одиночные кавычки (' ') сохраняют содержимое строки буквально: переменные ($VAR), подстановки команд и специальные символы не интерпретируются. Например, echo 'Сегодня $DATE' выведет текст как есть. Двойные кавычки (" ") позволяют расширять переменные и подстановки команд, но экранируют большинство специальных символов. Пример: echo "Сегодня $DATE" подставит актуальную дату. Без кавычек строка разбивается по пробелам, что может вызвать ошибки. Одиночные — для статичного текста, двойные — для динамического с подстановками. Это важно для безопасности и корректной работы скриптов.

Как запланировать выполнение скрипта каждые 15 минут, но только в рабочие дни?

В crontab (команда crontab -e) используйте формат: минуты часы * * день_недели команда. Для запуска каждые 15 минут только по будням (понедельник–пятница): */15 * * * 1-5 /полный/путь/к/скрипту.sh. Здесь */15 означает 0,15,30,45 минуты каждого часа, 1-5 — дни недели (1=понедельник). Скрипт должен быть исполняемым (chmod +x). Полный путь обязателен, так как cron имеет ограниченное окружение. Это обеспечит выполнение с 00:00 до 23:45 в рабочие дни.

Объясните, почему команды, работающие с пользовательским окружением, могут не работать через cron?

Cron запускает задачи в минимальной неинтерактивной среде без загрузки ~/.bashrc, ~/.profile и других пользовательских файлов. Переменные окружения (PATH, алиасы, функции) отсутствуют или ограничены системными значениями. Команды, зависящие от пользовательских настроек, не находят пути или не распознают алиасы. Решение: в скрипте явно source ~/.bashrc, указывать полный путь к командам или export нужных переменных. Для диагностики добавьте env > /tmp/cron_env в задачу и сравните с env в терминале.

Как в скрипте реализовать обработку ошибок выполнения команды?

В Bash проверяйте код возврата команды ($?): command; if [ $? -ne 0 ]; then echo "Ошибка!"; exit 1; fi. Или используйте &&/||: command && echo "OK" || { echo "Ошибка"; exit 1; }. Добавьте set -e в начало скрипта для автоматического выхода при ошибке. trap 'echo "Ошибка на строке $LINENO"; cleanup' ERR ловит ошибки глобально. Перенаправляйте ошибки: command 2>/tmp/error.log. Логируйте и очищайте ресурсы в обработчике. Это повышает надёжность скриптов.

Какие риски связаны с автоматической перезагрузкой системы через скрипт?

Автоматический reboot (sudo reboot в cron) может привести к потере несохранённых данных и повреждению файловых систем. Прерываются запущенные процессы, сервисы и пользовательские сессии, вызывая downtime. Ошибка в условии (например, неверный расчёт uptime) спровоцирует бесконечные перезагрузки. На серверах — потеря доступности для клиентов. Проблемы с аппаратным обеспечением или автозапуском сервисов после ребута. Для минимизации: добавьте уведомления, задержки, логирование и тестирование в виртуальной среде. Лучше использовать shutdown -r с предупреждением.

Вывод

В ходе работы освоены основы shell-скриптов: создание архивов (tar), очистка файлов (find), мониторинг uptime и диска (df). Реализованы скрипты для резервного копирования, очистки временных файлов, проверки времени работы системы и свободного места.

Настроены задачи в cron для ежедневного запуска. Учтены особенности окружения cron (ограниченный PATH, отсутствие ~/.bashrc). Изучены кавычки, обработка ошибок (set -e, trap) и риски авто-перезагрузки.

Работа выполнена полностью, навыки автоматизации рутинных задач получены.

Москва 2025

Соседние файлы в предмете Основы UNIX-подобных систем
  • #
    11.05.20262.71 Mб0Отчёт ЛР10.docx
  • #
    11.05.2026896.39 Кб0Отчёт ЛР2.docx
  • #
    11.05.20261.39 Mб0Отчёт ЛР3.docx
  • #
    11.05.20262.86 Mб0Отчёт ЛР4.docx
  • #
    11.05.2026797.41 Кб0Отчёт ЛР5.docx
  • #
    11.05.2026811.3 Кб0Отчёт ЛР6.docx
  • #
    11.05.2026412.13 Кб0Отчёт ЛР7.docx
  • #
    11.05.20262.18 Mб0Отчёт ЛР8.docx
  • #
    11.05.2026827.11 Кб0Отчёт ЛР9.docx