ОП.05Файловая система Linuxзанятие 3Материалы

Часть 8 из 8

Практическая работа: размещение файлов приложения

В этой части применим правила размещения файлов к собственному приложению shop-api и оформим отчёт по уроку.

  1. 8.1 Размещение файлов приложения
  2. 8.2 Отчёт

8.1 Размещение файлов приложения

Предположим, что в систему устанавливается служба shop-api. У неё есть исполняемый файл, настройки, база данных, журнал, файл с номером запущенного процесса и промежуточные файлы. По правилам из частей 2–4 каждый из них должен оказаться в каталоге, соответствующем типу данных.

Если сложить все файлы сервиса в один каталог, например в /home/admin/shop-api, появятся проблемы. При обновлении программы легко затереть настройки и базу. Резервную копию придётся делать для всего каталога целиком. Другой администратор не найдёт журнал там, где его обычно ищут.

ФайлКаталогОснование
исполняемый файл, установленный вручную/usr/local/binпрограммы вне пакетов дистрибутива
настройки/etc/shop-apiконфигурационные файлы
база данных/var/lib/shop-apiпостоянные изменяемые данные
журнал/var/log/shop-apiжурналы служб
номер процесса/run/shop-apiсведения о работающей службе, до перезагрузки
промежуточные файлы/tmpвременные данные

Системные каталоги в работе не изменяются. Структура воспроизводится внутри каталога model-root: путь model-root/etc/shop-api соответствует системному /etc/shop-api.

В терминалеСтруктура каталогов shop-api
  1. cd ~/linux-fhs-lab
    что делает

    Что делает команда. Переходит в рабочий каталог урока linux-fhs-lab.

    По частям:

    cd
    сменить текущий каталог
    ~/linux-fhs-lab
    куда перейти (путь от домашнего каталога)
  2. mkdir -p model-root/{usr/local/bin,etc/shop-api,var/lib/shop-api,var/log/shop-api,run/shop-api}# создать каталоги
    что делает

    Что делает команда. Создаёт внутри model-root пять каталогов, повторяющих системные места для файлов shop-api.

    По частям:

    mkdir
    создать каталог
    -p
    создать и все промежуточные каталоги; не выдавать ошибку, если каталог уже есть
    model-root/{usr/local/bin,etc/shop-api,var/lib/shop-api,var/log/shop-api,run/shop-api}
    какой каталог создать (путь относительно текущего каталога; фигурные скобки: оболочка превратит запись в несколько путей)
  3. cp config/app.conf model-root/etc/shop-api/# настройки
    что делает

    Что делает команда. Копирует файл настроек в каталог настроек модели сервиса.

    По частям:

    cp
    скопировать файл
    config/app.conf
    что копировать (путь относительно текущего каталога)
    model-root/etc/shop-api/
    куда копировать (путь относительно текущего каталога)
  4. cp data/info.txt model-root/var/lib/shop-api/# данные
    что делает

    Что делает команда. Копирует файл данных в каталог постоянных данных модели.

    По частям:

    cp
    скопировать файл
    data/info.txt
    что копировать (путь относительно текущего каталога)
    model-root/var/lib/shop-api/
    куда копировать (путь относительно текущего каталога)
  5. printf "service started\n" > model-root/var/log/shop-api/app.log# журнал
    что делает

    Что делает команда. Создаёт журнал сервиса с первой записью service started.

    По частям:

    printf
    вывести текст по шаблону
    "service started\n"
    шаблон текста (\n — перевод строки)
    >
    записать вывод в файл; если файл есть, он будет перезаписан
    model-root/var/log/shop-api/app.log
    файл, в который записывается вывод
  6. find model-root -type f# список файлов
    что делает

    Что делает команда. Показывает все файлы, созданные в модели сервиса.

    По частям:

    find
    найти файлы и каталоги
    model-root
    где искать
    -type f
    отбирать только обычные файлы
Результат

find выводит три файла в etc, var/lib и var/log.

Снимок 8.1Ubuntu 24.04
  1. 1журнал
  2. 2данные
  3. 3настройки
Структура каталогов shop-api внутри рабочего каталога.Весь снимок ↗

Структура каталогов shop-api внутри рабочего каталога.

Что показывает снимок. Структура каталогов сервиса повторяет системные каталоги: настройки, данные и журнал разложены по назначению.

Где это пригодится. Так размещают файлы при установке собственной службы на сервер: администратор и другие программы найдут их в стандартных местах.

8.2 Отчёт

Отчёт оформляется в файле README.md в каталоге linux-fhs-lab по шаблону из материалов урока. Снимки экрана сохраняются в каталог screenshots. Под каждым снимком кратко указывается, что проверялось и какой получен результат. Начало отчёта можно создать из терминала: оператор > создаёт файл заново, >> дописывает строки в конец.

В терминалеНачало отчёта
  1. cd ~/linux-fhs-lab
    что делает

    Что делает команда. Переходит в рабочий каталог урока linux-fhs-lab.

    По частям:

    cd
    сменить текущий каталог
    ~/linux-fhs-lab
    куда перейти (путь от домашнего каталога)
  2. printf "# Linux FHS lab\n\n" > README.md# создать файл
    что делает

    Что делает команда. Создаёт файл отчёта README.md с заголовком; старое содержимое, если было, стирается.

    По частям:

    printf
    вывести текст по шаблону
    "# Linux FHS lab\n\n"
    шаблон текста (\n — перевод строки)
    >
    записать вывод в файл; если файл есть, он будет перезаписан
    README.md
    файл, в который записывается вывод
  3. printf "## System\n" >> README.md# дописать строку
    что делает

    Что делает команда. Дописывает в конец отчёта заголовок раздела System.

    По частям:

    printf
    вывести текст по шаблону
    "## System\n"
    шаблон текста (\n — перевод строки)
    >>
    дописать вывод в конец файла
    README.md
    файл, в который записывается вывод
  4. cat /etc/os-release | head -4 >> README.md
    что делает

    Что делает команда. Дописывает в отчёт первые четыре строки сведений о системе.

    По частям:

    cat
    вывести содержимое файла на экран
    /etc/os-release
    какой файл вывести (абсолютный путь)
    |
    передать вывод левой команды на вход следующей
    head
    оставить только первые строки
    -4
    сколько первых строк оставить: 4
    >>
    дописать вывод в конец файла
    README.md
    файл, в который записывается вывод
  5. printf "\n## Root filesystem\n" >> README.md
    что делает

    Что делает команда. Дописывает в отчёт заголовок раздела Root filesystem.

    По частям:

    printf
    вывести текст по шаблону
    "\n## Root filesystem\n"
    шаблон текста (\n — перевод строки)
    >>
    дописать вывод в конец файла
    README.md
    файл, в который записывается вывод
  6. findmnt / -o TARGET,SOURCE,FSTYPE >> README.md
    что делает

    Что делает команда. Дописывает в отчёт сведения о корневой файловой системе.

    По частям:

    findmnt
    показать подключённые файловые системы
    /
    для какого пути (корневой каталог)
    -o TARGET,SOURCE,FSTYPE
    вывести только столбцы TARGET,SOURCE,FSTYPE
    >>
    дописать вывод в конец файла
    README.md
    файл, в который записывается вывод
  7. cat README.md
    что делает

    Что делает команда. Выводит готовый отчёт на экран для проверки.

    По частям:

    cat
    вывести содержимое файла на экран
    README.md
    какой файл вывести (путь относительно текущего каталога)
Результат

в README.md записаны сведения о системе и корневой файловой системе.

Снимок 8.2Ubuntu 24.04
  1. 1создание файла
  2. 2дописывание в конец
  3. 3сведения о корневой файловой системе
Сведения о системе записаны в файл отчёта.Весь снимок ↗

Сведения о системе записаны в файл отчёта.

Что показывает снимок. Вывод команд записан в файл отчёта: > создал файл, >> дописал строки в конец.

Где это пригодится. Перенаправление вывода в файл используют для отчётов, журналов работы скриптов и сохранения результатов команд.

Итоги части 8

  • Файлы приложения распределяются по каталогам согласно типу данных.
  • Настройки — /etc, программа — /usr/local/bin, данные — /var/lib, журналы — /var/log, сведения о работающей службе — /run.
  • Отчёт содержит собственные снимки и выводы по каждой части.

В отчётREADME с 13 снимками, структура shop-api и разбор итоговой задачи.

Что сдать

Каталог linux-fhs-lab с заполненным README.md и 13 снимками экрана. Если команду mount выполнить не удалось из-за прав, приложите текст ошибки и разбор опыта по снимкам урока.

СнимокТемаЧто написать под снимком
01-root.pngКорневой каталогЧто такое корневой каталог, чем абсолютный путь отличается от относительного.
02-home.pngДомашний каталогГде находится домашний каталог, что такое скрытые файлы.
03-system.pngКаталог /etcВерсия системы, UID, домашний каталог и оболочка.
04-programs.pngПрограммы и PATHКак оболочка находит программу.
05-var.pngИзменяемые данныеНазначение /var/lib, /var/log, /var/cache и /run.
06-dev.pngУстройстваТип устройства и код завершения.
07-proc.pngФайлы /procПочему копия не меняется.
08-sys.pngСетевые интерфейсыКакие интерфейсы есть в системе.
09-links.pnginode и ссылкиЧем жёсткая ссылка отличается от символической.
10-space.pngМесто на дискеЧем df отличается от du.
11-mount-before.pngМонтирование tmpfsПочему before.txt перестал быть виден.
12-mount-after.pngОтключение tmpfsЧто стало с inside.txt.
13-model.pngФайлы shop-apiПочему выбран каждый каталог.

Критерии оценки · 10 баллов

  • 2 дерево каталогов, домашний каталог, /etc и учётная запись
  • 2 программы и PATH, /var и /run, размещение shop-api
  • 2 /dev, /proc и /sys
  • 2 типы файлов, inode, жёсткие и символические ссылки
  • 2 findmnt, df, du и опыт с tmpfs

По каждому пункту: 2 балла — есть результат и вывод, 1 — результат без вывода, 0 — нет результата или вывод неверный.

Итоговая задача

Служба shop-api установлена в систему. Проверьте её пути и для каждой строки укажите: оставить путь или заменить, правильный путь и из какой части урока это следует. В настоящей системе ничего не перемещайте.

/home/admin/shop.log
/usr/bin/config.json
/tmp/database.db
/etc/shop-api/app.conf
/var/log/shop-api/access.log
/var/lib/shop-api/database.db

Домашнее задание

Составьте таблицу каталогов для службы резервного копирования backup-agent: программа, настройки, журнал, список сделанных копий и номер процесса. Для каждого файла укажите каталог и основание. Сами резервные копии храните на постоянном носителе.

Сдача: папка lesson_01 в своём репозитории по шаблону os-environments-template — отчёт report.md и 13 снимков в screenshots/, ветка hw-01, Pull Request в свою main, до начала следующего занятия.

Перед сдачей

Отмечено 0 из 5

Материалы

Открыть в отдельной вкладке ↗