Материал открыт для чтения

Войдите, чтобы сохранять прогресс и результаты.

Войти
Экспресс-погружение в DevOps

Файловая система Linux

чтение ~4 минУрок 6 из 19

Всё есть файл

crs express devops Image06

Одна из ключевых философий Linux: в Linux всё является файлом.

  • Обычный файл на диске? Файл.
  • Директория? Тоже файл (специального типа).
  • Жёсткий диск? Файл — /dev/sda.
  • Оперативная память? Файл — /proc/meminfo.
  • Запущенный процесс? Набор файлов в директории /proc/1234/.

Это не метафора — это архитектурное решение. Благодаря ему одни и те же команды работают и с файлами на диске, и с данными от устройств, и с информацией о процессах.


Дерево вместо дисков

Первое, что удивляет людей после Windows: в Linux нет дисков C:, D:, E:. Есть одно дерево директорий, которое начинается с корня /.

/
├── etc/      ← конфигурационные файлы
├── home/     ← домашние директории пользователей
│   ├── alice/
│   └── bob/
├── var/      ← изменяемые данные (логи, базы данных...)
│   └── log/
├── tmp/      ← временные файлы (очищаются при перезагрузке)
├── usr/      ← программы и данные
│   └── bin/  ← основная масса программ
├── bin/      ← базовые программы (ls, cat, cp...)
├── root/     ← домашняя директория root
└── proc/     ← виртуальная ФС: информация о процессах

Этот стандарт называется FHS (Filesystem Hierarchy Standard) — ему следуют все Linux-дистрибутивы.


Основные директории и их назначение

Директория Что там хранится
/ Корень — начало всего дерева
/etc Конфигурационные файлы сервисов и системы
/home Домашние директории пользователей (/home/alice, /home/bob)
/root Домашняя директория суперпользователя root
/bin, /usr/bin Исполняемые программы (ls, cp, grep, python3...)
/var/log Логи — системные, nginx, приложений
/var/lib Данные приложений (базы данных, docker images...)
/tmp Временные файлы, удаляются при перезагрузке
/dev Устройства: диски /dev/sda, терминалы /dev/tty
/proc Виртуальная ФС с информацией о запущенных процессах
/opt Программы, установленные вручную (не через пакетный менеджер)
/srv Данные для сервисов (веб-сервер, FTP...)

Ключевые директории

/etc — сердце конфигурации

Почти все настройки системы и сервисов хранятся здесь:

/etc/hosts              # таблица DNS-имён
/etc/ssh/sshd_config    # настройки SSH-сервера
/etc/nginx/nginx.conf   # настройки Nginx
/etc/systemd/           # конфигурация systemd-сервисов

Хочешь что-то настроить — сначала смотри в /etc.

/var/log — логи

/var/log/syslog          # системный лог
/var/log/nginx/          # логи Nginx
/var/log/auth.log        # логи аутентификации

Что-то сломалось — смотри сюда.

/home — твоя территория

Каждый пользователь получает свою директорию. ~ — специальный символ, который означает твою домашнюю директорию.

У root особая директория: /root (не /home/root).

/tmp — временный склад

Файлы здесь удаляются при перезагрузке. Идеально для скачанных архивов и промежуточных данных.


Абсолютные и относительные пути

Абсолютный путь начинается с / — однозначно указывает на файл из любой точки:

/root/project/main.go
/etc/nginx/nginx.conf

Относительный путь — относительно текущей директории:

project/main.go      # от текущей директории
../other/file.txt    # на уровень выше, затем в other/

Специальные обозначения:
- . — текущая директория
- .. — родительская директория
- ~ — домашняя директория
- - — предыдущая директория (работает с cd)


Скрытые файлы

Файл считается скрытым, если имя начинается с точки:

.bashrc       # настройки оболочки
.ssh/         # SSH-ключи и конфиги
.env          # переменные окружения (секреты!)
.gitignore    # правила для git

ls по умолчанию их не показывает. Чтобы увидеть — флаг -a:

ls -a     # показывает все файлы включая скрытые
ls -la    # + длинный формат с правами, размером, датой

Типы файлов

ls -la показывает тип первым символом строки:

Символ Тип
- Обычный файл
d Директория
l Символическая ссылка
b Блочное устройство (/dev/sda)
s Сокет (/var/run/docker.sock)

Материал изучен?

Войдите, чтобы сохранить прогресс и перейти к практической лаборатории.

Войти и продолжить