Структура каталогов в Linux

megaDED

Сержант
Модератор
Сообщения
34
Реакции
5
Стандарт иерархии файловой системы. Типичная UNIX-система состоит из тысяч файлов. В ходе разработки UNIX закрепились определенные правила, описывающие, в каких каталогах какие файлы принято сохранять. Эти правила были приспособлены к особенностям Linux и обобщены в специальном документе, именуемом «Стандартом иерархии файловой системы» (Filesystem Hierarchy Standard, FHS). Практически все дистрибутивы Linux за исключением нескольких построены согласно этому стандарту. Информацию о нем вы можете найти по адресу http://www.pathname.com/fhs/.
Информация, представленная в данном разделе, является лишь поверхностной справкой, помогающей сориентироваться на первом этапе (не больше!). Я учел здесь не только стандарт FHS, но и другие особенности, издавна характерные для различных популярных дистрибутивов Linux.
Файловая система начинается с корневого каталога. Как правило, в нем нет никаких файлов, только следующие каталоги.

/bin — содержит элементарные команды Linux, предназначенные для управления системой. Эти команды могут выполняться любыми пользователями. Остальные программы находятся в /usr/bin. В современных дистрибутивах /bin — это просто ссылка на /usr/bin, то есть разница между /bin и /usr/bin практически отсутствует.

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

/dev — содержит все файлы устройств. Доступ практически к любым компонентам аппаратного обеспечения, будь то серийный интерфейс или сегмент жесткого диска, осуществляется через специальные файлы-устройства (собственно, это не настоящие файлы). Файлы-устройства динамически создаются системой udev (см. также ниже). В большинстве дистрибутивов каталог расположен в оперативной памяти. Поэтому содержимое этого каталога при перезапуске компьютера не сохраняется.

/etc — включает в себя конфигурационные файлы для всей системы. В /etc имеется множество подкаталогов, в которых конфигурационные файлы распределяются по группам, например /etc/X11 для всех X-специфичных файлов.

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

/lib[64] — содержит множество общих библиотек (shared libraries) или символьные ссылки на них. Эти файлы обеспечивают работу программ. Каталог

/lib/modules включает модули ядра, которые динамически активируются или деактивируются без остановки работы системы. Остальные библиотеки находятся в каталоге /usr/lib[64]. В каталоге /lib/firmware находятся встроенные программы (так называемая прошивка) различных компонентов аппаратного обеспечения (например, контроллер WLAN). В современных дистрибутивах /lib является ссылкой на /usr/lib. Таким образом, все библиотеки централизованно сохраняются в каталоге /usr.

/lost+found — обычно этот каталог пуст. Если в нем есть файлы, то они являются фрагментами, которые не удалось упорядочить после восстановления файловой системы (fsck). Иными словами: были найдены сектора, но неизвестно, к какому файлу относится какой сектор. Вместо того чтобы просто удалять такие фрагменты, команда fsck копирует их в каталог /lost+found. Эта команда автоматически выполняется при запуске системы всякий раз, когда работа Linux была завершена с ошибками (перебои с электричеством, фатальный сбой и т.д.) или файловая система не проверялась в течение длительного времени. Цель fsck заключается в том, чтобы привести файловую систему в состояние, которое можно непротиворечиво описать.

/media — содержит такие подкаталоги, как cdrom или floppy, на месте которых можно привязать внешнюю файловую систему. Раньше этот каталог назывался /mnt, но со временем закрепился вариант /media. В новых дистрибутивах появилось и новое подобное место: внешние носители данных интегрируются в каталог файловой системы /run/media/username/storagename.

/opt — этот каталог предусмотрен для дополнительных пакетов, но в наиболее распространенных дистрибутивах он используется редко, возможно, потому, что не до конца ясно, чем дополнительные пакеты отличаются от обычных.

/proc — хранит подкаталоги для всех процессов, выполняемых в настоящий момент. В данном случае речь не идет о настоящих файлах! Каталог /proc просто отражает внутреннее управление процессами в системе Linux.

/root — содержит файлы root-пользователя (то есть системного администратора).

/sbin — включает команды, предназначенные для управления системой. Общий признак всех программ, содержащихся в этом каталоге, заключается в том, что все они могут выполняться только администратором. В современных дистрибутивах /sbin является ссылкой на /usr/sbin; все команды для управления системой теперь находятся в /usr/sbin.

/share — иногда содержит архитектурно-зависимые файлы (то есть файлы, не зависящие от процессора). Более правильно располагать такие файлы в каталоге /usr/share.

/srv — в некоторых дистрибутивах хранит данные по серверным процессам, например /srv/www для всех документов Apache, /srv/ftp для FTP-файлов и т.д.

/run — во многих современных дистрибутивах содержит файлы с идентификаторами процессов, а также дополнительную информацию по некоторым системным службам. Ранее такие файлы сохранялись в каталоге /var/run. Подкаталог /run/lock/ содержит блокирующие файлы. В более ранних дистрибутивах такие файлы находились в каталоге /var/lock. Во многих дистрибутивах в диск оперативной памяти был перемещен либо весь каталог /run, либо как минимум некоторые его подкаталоги. В /run содержатся в основном очень маленькие файлы, которые, таким образом, больше вообще не сохраняются на жестком диске или на твердотельном накопителе. Поэтому при перезапуске компьютера они теряются.

/sys — в версиях ядра от 2.6 и выше данный каталог содержит файловую систему sysfs. Эта система (как и proc) сообщает информацию о состоянии компьютера.

/tmp — содержит временные файлы. Однако часто временные файлы сохраняются и в /var/tmp.

/usr — включает все пользовательские программы, полноценную X-систему, исходные коды Linux и т.д. Как правило, содержимое этого каталога изменяется только при установке пакетов и выполнении обновлений. Изменяющиеся файлы располагаются в каталоге /var.

/var — содержит изменяющиеся файлы. Важнейшими подкаталогами здесь являются adm (административные файлы, отличаются в зависимости от дистрибутива), lock (блокирующие файлы, предотвращающие доступ к устройствам для пользователей, не имеющих на это права), log (файлы регистрации), mail (файлы электронных сообщений, также находятся в каталоге spool/mail) и spool (сохраненные в буфере файлы для вывода на печать, новостные файлы и т. д.).
Итак, понять структуру каталогов, расположенных на корневом уровне, совсем просто. Проблемы начинаются тогда, когда каталоги /usr и /var дробятся на бесчисленные подкаталоги. В принципе многие каталоги на этом уровне называются так же, как и на корневом — лишь исполняемые программы в данном случае находятся в каталоге bin.
При этом возникает такая проблема: существует большое количество групп исполняемых программ. Это, например, текстовые команды, X-программы и т. д. Соответственно, имеется много возможностей скрывать эти приложения. Так сложилось, что с помощью ссылок в системе часто используется множество параллельных путей. Например, /usr/bin/X11 ведет к тем же программам, что и /usr/X11R6/bin (оба этих пути логически и исторически обоснованы).
Полностью описать структуру каталогов в принципе невозможно. В табл. кратко рассматриваются подкаталоги, относящиеся к /usr.


Каталоги из /usr


(продолжение)​