Структура файловой системы Linux.

Переход с Windows на Linux часто сопровождается вопросом: «Где здесь диск C:?» В Linux всё устроено иначе — здесь нет привычных букв дисков, а вместо них используется единая древовидная структура каталогов.

В этой статье мы разберёмся, как организованы файлы и директории в Linux, какие изменения произошли в современных дистрибутивах, и как эффективно работать с файловой системой.




Всё-файл? Типы объектов в файловой системе

Фундаментальная философия Linux: «Всё — это файл» ( или процесс). Это означает, что взаимодействие с устройствами, процессами, сетью часто происходит через интерфейс файлов. В выводе команд ls -l первый символ указывает тип объекта:

  • -: Обычный файл (текст, изображение, исполняемый бинарник, архив).
  • d: Каталог( директория ) — файл-список содержащихся в нем файлов и других каталогов
  • l: Символическая ссылка (Symbolic Link) — «ярлык», указывающий на путь к другому файлу или каталогу.
  • c: Символьное устройство (Character Device) — устройство с последовательным потоковым доступом (клавиатура, терминал /dev/tty, принтер). Данные читаются/пишутся посимвольно
  • b: Блочное устройство (BLock Device) — устройство с блочным доступом ( жесткие диски /dev/sda, SSD, разделы /dev/sda1). Данные читаются/пишутся блоками.
  • s: Сокет (Socket) — специальный файл для сетевого и межпроцессорного взаимодействия (IPC). Аналог сетевых сокетов TCP/IP, но работающий в пределах одной машины (например, /run/systemd/private).
  • p: Именованный канал (Named Pipe или FIFO) — механизм однонаправленного или двунаправленного межпроцессорного взаимодействия (IPC). Данные передаются «первым пришел — первым ушел» (FIFO)

Особые каталоги . (текущий каталог) и .. (родительский каталог ) — это жесткие ссылки (hard links), встроенные в каждую директорию.


Корневая директория (/)

Корневая директория (/) — основа всей файловой системы Linux.

В отличие от Windows, где каждый диск имеет свою букву (C:, D: и т. д.), в Linux всё начинается с корня — /. Это точка входа в файловую систему, от которой отходят все остальные каталоги.

Примеры абсолютных путей:

  • /home/user — домашняя папка пользователя.
  • /etc/ssh/sshd_config — конфигурационный файл SSH-сервера.

⚠️ Важно: В Linux все пути начинаются с /, даже если устройство (например, флешка) подключено позже. Корень / — это точка монтирования для корневой файловой системы. Все остальные файловые системы ( дополнительные диски, разделы, съемные носители, виртуальные файловые системы) монтируются ( присоединяются ) в подкаталоги этого дерева, создавая единое пространство имен.


Основные системные каталоги

/bin и /usr/bin — исполняемые файлы

В /bin хранятся основные команды, такие как ls, cp, mv.
  • /bin — содержит основные исполняемые файлы, необходимые для работы системы (например, bash, ls, grep).
  • /usr/bin — программы, установленные пользователем или через пакетный менеджер.

Современные изменения: В некоторых дистрибутивах /bin и /usr/bin объединены в символическую ссылку для упрощения структуры.

/etc — конфигурационные файлы

В /etc хранятся настройки системы и установленных программ.

Здесь находятся:

  • Системные конфиги (/etc/fstab, /etc/hosts).
  • Настройки сервисов (/etc/nginx/, /etc/docker/).

💡Совет: Перед редактированием файлов в /etc делайте резервные копии!

/dev — устройства системы

В /dev находятся виртуальные файлы, представляющие устройства.

Linux рассматривает всё оборудование как файлы:

  • /dev/sda — жёсткий диск.
  • /dev/null — «чёрная дыра» для данных.
  • /dev/tty — терминальные устройства.

Современные системы используют udev для динамического создания и управления файлами устройств в /dev в ответ на подключение/отключение оборудования.

/proc виртуальная файловая система процессов

/proc — это не настоящие файлы на диске, а виртуальное представление состояния ядра и процессов в реальном времени.

Каждая запущенная программа ( процесс ) имеет свою поддерикторию /proc/<PID> ( где PID — идентификатор процесса ), содержащую информацию о ее памяти, открытых файлах, окружении и т.д.

Файла в /proc/sys позволяют читать и часто изменять параметры ядра ( sysctl) на лету ( например, настройки сети /proc/sys/net/ipv4).

💡 Совет: Изучайте содержимое /proc командами cat или less.

⚠️Предупреждение: Неосторожное изменение файлов в /proc/sys может нарушить работу системы! Всегда проверяйте назначение параметра перед изменением.

/sysвиртуальная файловая система устройств и драйверов.

/sys ( интерфейс sysfs) — еще одна виртуальная ФС, предоставляющая единый структурированный доступ к информации об оборудовании, его конфигурации, драйверах и атрибутах устройств из пространства пользователя.

Тесно интегрирована с udev. Позволяет детально настраивать и получать информацию о железе ( уровни яркости, параметры питания, состояние устройств ).

/home — домашние каталоги пользователей

Каждый пользователь имеет свою папку в /home.
  • /home/user — хранит личные файлы, настройки (.config), загрузки.
  • Исключение — root, его домашняя папка /root.

Скрытые файлы и каталоги в /home/user ( начинающиеся с точки, например .config, .bashrc) содержат пользовательские настройки приложений и оболочки.

💡Совет: Регулярно делайте бэкап /home — это спасёт ваши данные при сбоях.

/tmp и /var/tmp — временные файлы

Файлы в /tmp автоматически удаляются после перезагрузки.
  • /tmp — очищается при перезагрузке.
  • /var/tmp — хранит временные данные дольше.

В современных дистрибутивах /tmp часто монтируется в оперативную память (tmpfs), что обеспечивает очень высокую скорость доступа и гарантирует автоматическую очистку не только при перезагрузке, но и при выключении.

/var/tmp обычно размещается на диске и предназначен для временных файлов, которые должны сохраняться между перезагрузками ( например, кэш больших установок ).

Современные практики: Некоторые сервисы используют /run для временных файлов во время работы.


Каталоги для программ и библиотек

/usr — вторичная иерархия

/usr содержит большинство установленных программ.
  • /usr/bin — дополнительные программы.
  • /usr/share — общие данные (иконки, шрифты, документация).
  • /usr/lib — библиотеки.

Современная тенденция ( особенно с распространением systemd): /bin, /sbin, /lib и /lib64 являются символическими ссылками на соответствующие каталоги внутри /usr ( /usr/bin, /usr/sbin, /usr/lib). Это реализация концепции merged /usr или usmerge, упрощающая структуру и управление пакетами.

⚠️Важно: В современных системах /usr может быть отдельным разделом.

/opt — стороннее ПО

/opt используется для проприетарного ПО в изолированных папках.

Примеры:

  • /opt/google/chrome — браузер Chrome.
  • /opt/jetbrains — IDE от JetBrains.

Программы в /opt обычно содержат все свои зависимости внутри своей поддиректории (/opt/programname/bin, /opt/programname/lib), что делает их максимально изолированными от системы.

💡Плюсы: Удобно удалять — просто стираете папку.

/usr/local — локальные программы

/usr/local предназначен для софта, установленного вручную.

Используется для:

  • Скриптов (/usr/local/bin).
  • Локальных сервисов.

Программы, установленные из исходных кодов с помощью make install ( без использования пакетного менеджера дистрибутива), по умолчанию попадают сюда ( /usr/local/bin, /usr/local/lib, /usr/local/etc). Это позволяет избежать конфликтов с файлами, управляемыми пакетным менеджером в /usr.


Монтирование устройств (/media, /mnt, /run/media)

В /media автоматически появляются подключённые устройства.
  • /media — для съёмных носителей (флешки, диски).
  • /mnt — для временного монтирования вручную.

Современные графические окружения рабочего стола ( GNOME, KDE Plasma, XFCE и др.) автоматически монтируют съемные носители ( флешки, внешние HDD/SDD, карты памяти, телефоны) в подкаталоги /run/media/username (распространено в Fedora/RHEL/openSUSE) или /media/username (распространено в Ubuntu/Debian). Каталог /run сам по себе является tmpfs (монтируется в ОЗУ). Каталог /mnt традиционно используется для ручного (администратором) временного или постоянного монтирования файловых систем (например, сетевой шары NFS или дополнительного раздела диска).


Заключение.

Понимание структуры каталогов Linux — ключ к эффективной работе. В отличие от Windows, здесь всё логично организовано:

  • Системные файлы/etc, /bin, /lib.
  • Пользовательские данные/home.
  • Временные файлы/tmp.
  • Программы/usr, /opt.

Советы для новичков:

  1. Не редактируйте системные файлы без необходимости.
  2. Храните данные в /home.
  3. Используйте /opt для тестового ПО.

Было ли это полезно?

8 / 0

Добавить комментарий 0