Экспресс-опрос
- Для чего нужны циклы в скрипте?
- Какими способами можно запускать скрипты?
Задача 1 — Мониторинг дискового пространства
Создать скрипт, который будет мониторить занятое дисковое пространство.
Если место заканчивается, а именно в корневом разделе файловой системы занято больше 70%, то найти самые большие директории и файлы.
Подсказки
- Используйте
df /для получения информации о диске - 5-я колонка вывода (
Use%) содержит процент использования - Уберите
%с помощьюsed 's/%//' - Сравните числа через
[ "$disk_usage" -gt "$threshold" ]
Задача 2 — Системный отчёт
Создать скрипт, который будет готовить отчёт о системе: версия операционной системы, дата и время, время работы, загруженность системы, занятое дисковое пространство, топ процессы по использованию памяти, количество процессов, количество пользователей.
Подсказки
- Версия ОС:
cat /etc/os-release | grep "PRETTY_NAME" | cut -d '"' -f 2 - Время работы:
uptime -p - Нагрузка:
uptime | awk -F'[a-z]:' '{ print $2 }' - Топ процессов:
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -n 6 - Пользователи:
who | wc -l
Задача 3 — Cron-бекап
Создать задание, которое будет раз в неделю (каждую неделю в воскресенье в 2 часа ночи) бекапить
/opt и /home/ec2-user директории, создавая архивы. Настроить скрипт так, чтобы он хранил не более 3 копий архивов с бекапами.
Подсказки
- Расписание cron:
0 2 * * 0(минута=0, час=2, день недели=0=воскресенье) - Имя архива включает дату:
$(date +%Y-%m-%d) - Удаление старых:
find "$backup_location" -maxdepth 1 -type f -name "*.tar.gz" -mtime +21 -delete
Задача 4 — Мониторинг логов
Создать скрипт, который будет проверять на ошибки в логах в директории
/var/log и готовить отчёт об их количестве и самых частых ошибках.
Добавить шаблон для поиска ошибок как переменную: искать error Error ERROR WARNING и прочие похожие сочетания.
Подсказки
- Шаблон:
error_patterns="(error|Error|ERROR|warning|Warning|WARNING)" - Рекурсивный поиск:
grep -E -r "$error_patterns" "$log_directory" - Подсчёт уникальных:
sort | uniq -c | sort -nr