Лабораторная работа по Linux

Адаптировано для выполнения в терминале coddy.tech

Описание

Эта лабораторная работа выполняется в онлайн-терминале 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. Требования к отчёту

  1. Название лабораторной работы.
  2. Цель работы.
  3. Последовательность выполненных команд.
  4. Результаты выполнения команд.
  5. Результат работы скрипта check.sh.
  6. Ответы на контрольные вопросы.
  7. Вывод.

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

  1. Что делает команда mkdir -p?
  2. Что показывает команда find . -type f?
  3. Как создать пустой файл?
  4. Как вывести содержимое файла?
  5. Что делает команда grep -c?
  6. Что делает команда grep -v?
  7. Для чего нужен конвейер |?
  8. Что делает команда chmod 600?
  9. Чем символическая ссылка отличается от обычного файла?
  10. Что делает команда tar -cf?
  11. Что делает команда tar -xf?
  12. Как сделать скрипт исполняемым?

18. Удаление файлов после работы

Если лабораторная больше не нужна, удалите рабочую директорию:

cd ..
rm -r coddy_lab
Опубликовано на htmlkin.ru