# Файловая система Linux · памятка

## 1. Дерево каталогов и пути

- Файлы Linux образуют одно дерево каталогов с вершиной в корневом каталоге `/`.
- Текущий каталог показывает `pwd`, переход выполняет `cd`, содержимое выводит `ls`.
- Абсолютный путь начинается с `/` и не зависит от текущего каталога, относительный отсчитывается от текущего.
- Личные файлы пользователя хранятся в домашнем каталоге `~`, имена с точкой — скрытые.

## 2. Назначение каталогов и стандарт FHS

- Стандарт FHS определяет назначение основных каталогов Linux.
- Файлы распределяются по типу данных: настройки — `/etc`, программы — `/usr`, изменяемые данные — `/var`.
- Конфигурационные файлы — текстовые, программы читают их при запуске.
- Учётные записи описаны в `/etc/passwd`, пароли хранятся в `/etc/shadow`.

## 3. Где хранятся программы и как оболочка их находит

- Программы из пакетов хранятся в `/usr`, установленные вручную — в `/usr/local`.
- Оболочка ищет исполняемый файл по каталогам из переменной `PATH` и запускает первый найденный.
- Встроенные команды, такие как `cd`, выполняет сама оболочка.
- В Ubuntu `/bin`, `/sbin` и `/lib` — ссылки на каталоги внутри `/usr`.

## 4. Изменяемые и временные данные

- Данные, изменяющиеся во время работы программ, хранятся в `/var`.
- `/var/lib` — постоянные данные, `/var/log` — журналы, `/var/cache` — кэш, `/var/spool` — очереди.
- `/tmp` и `/run` очищаются при перезагрузке, `/var/tmp` — нет.
- tmpfs хранит файлы в оперативной памяти.

## 5. Устройства и сведения ядра: /dev, /proc, /sys

- Устройства представлены специальными файлами в `/dev`; `c` — символьные, `b` — блочные.
- Код завершения последней команды хранится в `$?`, 0 означает успех.
- `/proc` и `/sys` — псевдофайловые системы: содержимое их файлов формирует ядро при чтении.
- `/proc` описывает процессы и состояние системы, `/sys` — устройства.

## 6. Типы файлов, inode и ссылки

- Тип объекта обозначается первым символом в `ls -l`; содержимое определяет `file`.
- Сведения о файле хранятся в inode, имя — в каталоге.
- Жёсткая ссылка — дополнительное имя того же inode; данные удаляются вместе с последним именем.
- Символическая ссылка хранит путь и перестаёт работать, если по этому пути нет файла.

## 7. Файловые системы и монтирование

- Файловая система определяет способ хранения файлов; основные типы — ext4, tmpfs, proc, sysfs.
- Монтирование подключает файловую систему к каталогу — точке монтирования.
- `findmnt` показывает подключённые файловые системы, `lsblk` — диски и разделы.
- `ls -lh` — размер файла, `du -sh` — место каталога, `df -h` — место файловой системы.

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

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

## Команды

- `pwd`, `cd`, `ls -lah` — текущий каталог, переход, содержимое.
- `command -v`, `type` — как оболочка разрешает имя команды.
- `readlink -f` — цель символической ссылки.
- `file` — тип содержимого файла.
- `stat`, `ls -li` — сведения из inode.
- `ln файл имя` — жёсткая ссылка; `ln -s цель ссылка` — символическая.
- `findmnt -T путь` — файловая система, содержащая путь.
- `lsblk` — диски и разделы; `df -h .` — место на файловой системе; `du -sh каталог` — место, занятое каталогом.
- `dpkg -L пакет` — файлы пакета.
