Введение

Стандарт Linux для структуры каталогов

Стандарт иерархии файловой системы (FHS) — это руководство, описывающее общепринятые соглашения о расположении файлов и каталогов в Unix-подобных операционных системах. Он получил широкое распространение благодаря использованию в дистрибутивах Linux, но применяется и в других Unix-подобных системах. Поддержка стандарта осуществляется Фондом Linux. Последняя версия — 3.0, выпущенная 3 июня 2015 года.

Структура справочника

В FHS все файлы и каталоги отображаются под корневым каталогом /, даже если они хранятся на разных физических или виртуальных устройствах. Некоторые из этих каталогов существуют только в определенной системе, если установлены определенные подсистемы, такие как X Window System. Большинство из этих каталогов существуют во всех Unix-подобных операционных системах и обычно используются почти одинаково; однако, описания здесь используются специально для FHS и не считаются авторитетными для платформ, отличных от Linux. DirectoryDescription/Корневой каталог и корень всей иерархии файловой системы./binОсновные исполняемые файлы команд, необходимые для работы в однопользовательском режиме, включая запуск или восстановление системы, для всех пользователей (например, cat, ls, cp)./bootФайлы загрузчика (например, ядра, initrd)./devФайлы устройств (например, /dev/null, /dev/disk0, /dev/sda1, /dev/tty, /dev/random)./etcСистемные конфигурационные файлы, специфичные для хоста. Существовали споры о значении самого имени. В ранних версиях документа UNIX Implementation Document от Bell Labs, /etc упоминается как каталог etcetera, поскольку исторически в этом каталоге хранилось все, что не имело другого места (однако FHS ограничивает /etc статическими конфигурационными файлами и не допускает хранения в нем исполняемых файлов). С момента публикации первых документов название каталога интерпретировалось по-разному. Недавние интерпретации включают в себя такие ретронимы, как "Editable Text Configuration" (Редактируемая текстовая конфигурация) или "Extended Tool Chest" (Расширенный ящик с инструментами)./etc/optКонфигурационные файлы для дополнительных пакетов, хранящихся в /opt./etc/sgmlКонфигурационные файлы, такие как каталоги, для программного обеспечения, обрабатывающего SGML./etc/X11Конфигурационные файлы для X Window System, версия 11./etc/xmlКонфигурационные файлы, такие как каталоги, для программного обеспечения, обрабатывающего XML./homeДомашние каталоги пользователей, содержащие сохраненные файлы, личные настройки и т. д./libНеобходимые библиотеки для исполняемых файлов в /bin и /sbin./lib<qual>Альтернативные библиотеки формата. Обычно используются в системах, поддерживающих более одного формата исполняемого кода, например, в системах, поддерживающих 32-битные и 64-битные версии набора инструкций. Такие каталоги являются необязательными, но если они существуют, они должны соответствовать определенным требованиям./mediaТочки монтирования для съемных носителей, таких как CD-ROM (появилось в FHS 2.3 в 2004 году)./mntВременно подключенные файловые системы./optДополнительное прикладное программное обеспечение./procВиртуальная файловая система, предоставляющая информацию о процессах и ядре в виде файлов. В Linux соответствует монтированию procfs. Обычно автоматически генерируется и заполняется системой в режиме реального времени./rootДомашний каталог пользователя root./runПеременные данные времени выполнения: информация о работающей системе с момента последней загрузки, например, текущие пользователи и запущенные демоны. Файлы в этом каталоге должны быть удалены или усечены в начале процесса загрузки, но это не обязательно в системах, предоставляющих этот каталог в качестве временной файловой системы (tmpfs)./sbinОсновные системные исполняемые файлы (например, fsck, init, route)./srvДанные, специфичные для сайта, обслуживаемые этой системой, такие как данные и скрипты для веб-серверов, данные, предоставляемые FTP-серверами, и репозитории для систем контроля версий (появилось в FHS 2.3 в 2004 году)./sysСодержит информацию об устройствах, драйверах и некоторых функциях ядра./tmpКаталог для временных файлов (см. также /var/tmp). Часто не сохраняется между перезагрузками системы и может иметь серьезные ограничения по размеру./usrВторичная иерархия для пользовательских данных, доступных только для чтения; содержит большинство (многопользовательских) утилит и приложений. Должна быть доступна для совместного использования и чтения только./usr/binНеобязательные исполняемые файлы команд (не нужны в однопользовательском режиме); для всех пользователей./usr/includeСтандартные файлы включения./usr/libБиблиотеки для исполняемых файлов в /usr/bin и /usr/sbin./usr/libexecИсполняемые файлы, запускаемые другими программами, которые не предназначены для непосредственного выполнения пользователями или скриптами оболочки (необязательно)./usr/lib<qual>Альтернативные библиотеки формата (например, /usr/lib32 для 32-битных библиотек на 64-битной машине (необязательно))./usr/localТретичная иерархия для локальных данных, специфичных для этого хоста. Обычно имеет дополнительные подкаталоги (например, bin, lib, share)./usr/sbinНеобязательные системные исполняемые файлы (например, демоны для различных сетевых служб)./usr/shareДанные, независимые от архитектуры (общие)./usr/srcИсходный код (например, исходный код ядра с файлами заголовков)./usr/X11R6X Window System, версия 11, выпуск 6 (до FHS 2.3, необязательно)./varПеременные файлы: файлы, содержимое которых, как ожидается, будет постоянно меняться в процессе нормальной работы системы, такие как журналы, файлы очереди и временные файлы электронной почты./var/cacheДанные кэша приложений. Такие данные генерируются локально в результате трудоемких операций ввода-вывода или вычислений. Приложение должно иметь возможность восстановить или перегенерировать данные. Кэшированные файлы можно удалить без потери данных./var/libИнформация о состоянии. Постоянные данные, изменяемые программами во время их работы (например, базы данных, метаданные системы управления пакетами и т. д.)./var/lockФайлы блокировки. Файлы, отслеживающие ресурсы, которые в настоящее время используются./var/logФайлы журналов. Различные журналы./var/mailФайлы почтовых ящиков. В некоторых дистрибутивах эти файлы могут находиться в устаревшем каталоге /var/spool/mail./var/optПеременные данные из дополнительных пакетов, хранящихся в /opt./var/runПеременные данные времени выполнения. Этот каталог содержит информацию о системе с момента ее загрузки. В FHS 3.0 /var/run заменяется на /run; система должна либо продолжать предоставлять каталог /var/run, либо предоставить символическую ссылку из /var/run в /run для обратной совместимости./var/spoolОчередь для задач, ожидающих обработки (например, очереди печати и исходящей почты)./var/spool/mailУстаревшее расположение почтовых ящиков пользователей./var/tmpВременные файлы, которые должны сохраняться между перезагрузками.

Название usr

/usr изначально означало "пользователь". Это было следствием раннего программирования Unix. В частности, когда Кен Томпсон и Деннис Ричи переносили Unix на PDP 11, каталоги /bin и /lib, которые должны были быть первыми смонтированными при загрузке и содержать все необходимое для работы ОС, стали больше диска RK05. Поэтому часть файлов поместили на первый диск RK05, включая те, что требовались для загрузки второго диска RK05. Остальное поместили в каталог /usr. Когда появился третий диск, файлы пользователей переместили в новый каталог /home. FHS был создан как FSSTND (сокращение от "Filesystem Standard"), во многом основываясь на аналогичных стандартах для других Unix-подобных операционных систем. Примерами являются: описание структуры файловой системы, которое существовало с момента выпуска Unix версии 7 (в 1979 году); SunOS и её преемник Solaris.

История релизов

Версия Дата выпуска Примечания 1994 02 14 FSSTND 1994 10 09 FSSTND 1995 03 28 FSSTND 1997 10 26 FHS 2.0 является прямым преемником FSSTND 1.2. Название стандарта было изменено на Filesystem Hierarchy Standard. 2000 04 12 ФХС 2001 05 23 ФХС 2004 01 29 ФХС 2015 05 18 ФХС