Описание
Эта лабораторная работа выполняется в онлайн-терминале Coddy.
Все команды используют стандартные средства Linux:
mkdir, cd, ls, cat,
echo, grep, awk, sed,
find, chmod, tar.
$ или #, если он показан в примере.
1. Создание рабочей директории
Создайте структуру проекта и перейдите в неё:
mkdir -p coddy_lab/bin coddy_lab/config coddy_lab/data coddy_lab/logs coddy_lab/backup coddy_lab/restore
cd coddy_lab
find . -type d
Ожидаемый результат: каталоги bin, config, data, logs, backup, restore.
2. Создание файла конфигурации
Создайте конфигурацию приложения:
cat > config/app.conf <<'EOF'
env=production
port=8080
timeout=30
EOF
cat config/app.conf
3. Создание файлов данных
Создайте несколько простых файлов данных:
echo "record 1" > data/item_1.txt
echo "record 2" > data/item_2.txt
echo "record 3" > data/item_3.txt
ls -l data
4. Создание файла логов
Создайте учебный лог-файл:
cat > logs/app.log <<'EOF'
2026-09-10 10:00:01 INFO service started
2026-09-10 10:00:05 DEBUG loading config
2026-09-10 10:00:09 WARN slow response
2026-09-10 10:00:12 ERROR db connection failed
2026-09-10 10:01:00 INFO retry
2026-09-10 10:01:03 ERROR db connection failed
2026-09-10 10:02:00 INFO service recovered
EOF
cat logs/app.log
5. Создание символической ссылки
Создайте ссылку на конфигурационный файл:
ln -s ../config/app.conf data/app_link.conf
ls -l data
cat data/app_link.conf
6. Настройка прав доступа
Измените права доступа к файлам:
chmod 640 config/app.conf
chmod 600 logs/app.log
ls -l config
ls -l logs
Права 640 означают чтение и запись для владельца, чтение для группы.
Права 600 означают чтение и запись только для владельца.
7. Поиск файлов
Найдите файлы по расширению:
find . -type f -name "*.log"
find . -type f -name "*.txt"
find . -type f -name "*.conf"
8. Работа с grep
Выполните поиск по логам:
grep ERROR logs/app.log
grep WARN logs/app.log
grep -v DEBUG logs/app.log
grep -c ERROR logs/app.log
Команда grep -c считает количество совпадений.
9. Подсчёт уровней логов
Посчитайте количество сообщений каждого уровня:
awk '{print $3}' logs/app.log | sort | uniq -c
Пример ожидаемого результата:
1 DEBUG
3 ERROR
3 INFO
1 WARN
10. Изменение текста через sed
Создайте копию конфигурации для окружения staging:
sed 's/env=production/env=staging/' config/app.conf > config/app_staging.conf
cat config/app_staging.conf
11. Создание скрипта отчёта
Создайте скрипт, который собирает информацию о проекте:
cat > bin/report.sh <<'EOF'
#!/bin/sh
cd "$(dirname "$0")/.." || exit 1
echo "=== Report ==="
echo "Date: $(date)"
echo "Files:"
find . -type f | sort
echo "ERROR count: $(grep -c ERROR logs/app.log)"
echo "WARN count: $(grep -c WARN logs/app.log)"
EOF
chmod +x bin/report.sh
./bin/report.sh
Сохраните отчёт в файл:
./bin/report.sh > logs/report.txt
cat logs/report.txt
12. Создание резервной копии
Создайте скрипт резервного копирования:
cat > bin/backup.sh <<'EOF'
#!/bin/sh
cd "$(dirname "$0")/.." || exit 1
mkdir -p backup
tar -cf backup/lab_backup.tar config data logs
echo "Backup created: backup/lab_backup.tar"
EOF
chmod +x bin/backup.sh
./bin/backup.sh
ls -l backup
13. Восстановление из резервной копии
Распакуйте архив в директорию restore:
mkdir -p restore
tar -xf backup/lab_backup.tar -C restore
find restore -type f
cat restore/config/app.conf
14. Проверка выполнения лабораторной
Создайте проверочный скрипт:
cat > bin/check.sh <<'EOF'
#!/bin/sh
cd "$(dirname "$0")/.." || exit 1
ok=0
fail=0
check_file() {
if [ -f "$1" ]; then
echo "OK: $1"
ok=$((ok + 1))
else
echo "FAIL: $1"
fail=$((fail + 1))
fi
}
check_file config/app.conf
check_file config/app_staging.conf
check_file data/item_1.txt
check_file logs/app.log
check_file logs/report.txt
check_file backup/lab_backup.tar
check_file restore/config/app.conf
echo "Passed: $ok"
echo "Failed: $fail"
EOF
chmod +x bin/check.sh
./bin/check.sh
Если всё выполнено правильно, вывод должен быть примерно таким:
OK: config/app.conf
OK: config/app_staging.conf
OK: data/item_1.txt
OK: logs/app.log
OK: logs/report.txt
OK: backup/lab_backup.tar
OK: restore/config/app.conf
Passed: 7
Failed: 0
15. Итоговая структура проекта
Проверьте итоговую структуру:
find . | sort
Примерная структура:
.
./backup
./backup/lab_backup.tar
./bin
./bin/backup.sh
./bin/check.sh
./bin/report.sh
./config
./config/app.conf
./config/app_staging.conf
./data
./data/app_link.conf
./data/item_1.txt
./data/item_2.txt
./data/item_3.txt
./logs
./logs/app.log
./logs/report.txt
./restore
./restore/config
./restore/data
./restore/logs
16. Требования к отчёту
- Название лабораторной работы.
- Цель работы.
- Последовательность выполненных команд.
- Результаты выполнения команд.
- Результат работы скрипта
check.sh. - Ответы на контрольные вопросы.
- Вывод.
17. Контрольные вопросы
- Что делает команда
mkdir -p? - Что показывает команда
find . -type f? - Как создать пустой файл?
- Как вывести содержимое файла?
- Что делает команда
grep -c? - Что делает команда
grep -v? - Для чего нужен конвейер
|? - Что делает команда
chmod 600? - Чем символическая ссылка отличается от обычного файла?
- Что делает команда
tar -cf? - Что делает команда
tar -xf? - Как сделать скрипт исполняемым?
18. Удаление файлов после работы
Если лабораторная больше не нужна, удалите рабочую директорию:
cd ..
rm -r coddy_lab