Differences between revisions 1 and 6 (spanning 5 versions)
Revision 1 as of 2008-07-21 17:46:46
Size: 7146
Editor: eSyr
Comment:
Revision 6 as of 2008-07-27 15:34:47
Size: 17139
Comment: Поабзацный перевод
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
Очень важная тема. Иерархия стандартных каталогов в Линукс достаточно жестко предопределена. Файловая система образует единую структуру --- дерево каталогов, "растущее" из корня (каталог /). Определенная группа людей выпускает ревизии документа под названием Filesystem Hierarchy Standard (FHS), в который включаются рекомендации по поводу того, как должна выглядеть файловая система в POSIX-совместимой ОС. В ПСПО ALT Linux данный документ поставляется в пакете с соответствующим названием --- fhs.
Line 5: Line 5:
Пскольку у нас есть ровно дна структура ФС, то можно позволить договориться о том, чт растёт из этого корня. Есть группа людей, которые занимаются подготовкой документа FHS, в который включают всякие рекмендации оп поводу того, где что лежит в posix-совместимой системе. Согласно FHS, каждый из подкаталогов корневого каталога имеет стандартное имя и заранее определенное назначение. Опишем их вкратце.
Line 7: Line 7:
В корне у нас находится неск. подкаталогов, больше их не должно быть. У каждого из каталогов есть собственное назначение.
 * /bin/ содерж исп. файлы, причём только те, ктоорые исп. для вывода системы в шитатный режим.
 * /boot/ содержит файлы, исп. в прцессе досистемной загрузки --- ядро, вирт. диск, иногда загрузчик (grub)
 * /dev/ --- специальный каталог, где хранятся спец. файлы, предн. вот для чего --- чтбы можно было работать с устройствами системы, исп. файловые операции. Помимо обычных файловых операций есть ещё ioctl. Обычному польз. это не очень нужно, это нуно системе
 * /etc/ --- настречные файлы. Сист. адм., как правило, конф. всё именно здесь.
 * /home/ --- каталг для домашних каталогов польз.
 * /lib/ --- предн. для разных библитек, необх. для старта системы.
  * Что такое библиотеки. Вот нужен синус, вы его написали. Выясняется, что синус нужен в неск местах, и хорошо бы синус держать отдельно, чтобы им могли все польз. Потом оказ., что таких функций много и странно компилировать это большое каждый раз. Хорошо бы скомп. эти функции один раз, получится один файл и при небх его прилинковывать. След. этап --- не надо сотни функций зранить в сотне файлов, и хорошо бы заархивировать их в один файл и чтобы комп. мог уметь им пользоваться. И это уже библиотека. И можн ей хорошо польз. Проблемы нач. дальше --- окгда собир. 30 программ, и в них 30 раз слинкована одна библитека. Жалк место и хрошо, чтобы лежало не в одном месте, а в тридцати. Другая прбелм хуже --- при изм. библиотеки надо перекомпилирвать всё. Выход --- отк. т статической линквки и исп. динамическую. Недостаток --- прграмма не запустится, если библиотеки нет. Есть программа ldd, которая показывает, каике библ. нужны конкр. программы.
 * /lost+found/ --- в каждой файловой сист. создаётся этот каталог, в случае файлов без имени, которые нашлись.
 * /media/ --- предн. для авт. подключения устройств. Согласно стандарту, результат надмозга, кторый сам подключает нвые устройства,длжен быть подкаталогом каталога /media/
 * /mnt/ --- используется в случае, если устройства подк. вручную.
 * /opt/ --- предн. для того, чтобы сваливать всё, что не вхдит в дистрибутив. Обычно пустующий.
 * /proc/ --- вирт. ФС, специфичная в сновном для Linux, где в виде файлв и каталогов предст. структура процессов и прочая информация.
 * /root/ --- домашний каталог суперпользователя. Это нужно для того, чтобы но было доступно тогда, когда /home/ отвалился
 * /sbin/ --- там хранятся программы, не нужны бычным людям, но исп. системой.
 * /srv/ --- server --- разр. разм. файлы, которые мы разд. всем окружающим
 * /sys/ --- ещё одна вирт. ФС, которая предст. в виде ФС структуру апп. обесп. в том виде, в которм восп. её ядро. Она удобна для продв. польз., ещё более удобна для роботов
 * /tmp/ -- временный каталог
 * /var/ --- каталог, предн. для данных, размер и кол-во которых неизвестны
  * log --- журналы
  * db --- нетекстовые файлы, БД
  * lock --- для файлов блокировки
  * mail --- списки почтовых очередей
  * run ---
  * cache --- кэши
  * opt --- здесь программы из /opt хрнят свои данные
  * lib --- там держат свои файлы рзные службы
 * /usr/
  * bin, lib --- исп. для всех ост. программ и библиотек
  * share --- в него складываются файлы, не зав. от архитектуры
   * doc --- документация
/bin содержит используемые при старте исполняемые файлы, необходимые для выведения системы в штатный режим.
Line 39: Line 9:
##остались типы файлов /boot содержит файлы, используемые в процессе досистемной загрузки. Как правило, это ядро ОС, виртуальный диск (как ядер, так и виртуальных дисков может быть несколько), иногда --- загрузчик (если используется Grub).
Line 41: Line 11:
/dev --- каталог для "специальных файлов", предоставляющих возможность работать со внешними устройствами системы, используя только файловые операции. Поскольку внешнее устройство --- сущность более сложная, чем файл, то помимо обычных файловых операций есть файловая операция '''управления''' вводом-выводом --- ioctl. Каждому устройству может соответствовать свой формат ioctl. Большинство файлов в каталоге /dev обычно используются не пользователем, а самой системой.

/etc --- каталог для общесистемных конфигурационных (настроечных) файлов. Настройка системы системным администратором сводится в первую очередь к изменению содержимого каталога /etc. Сохранение всего /etc и базы данных установленных пакетов делает восстановление ОС довольно несложной операцией.

/home --- это каталог, в котором хранятся домашние каталоги пользователей.

/lib предназначен для хранения библиотек, необходимых для старта системы.

==== Отступление: библиотеки ====

 1. Напишем программу, использующую функцию синус. Предположим, что взять реализацию самой этой функции нам негде, и напишем собственную реализацию известного алгоритма. Быстро выяснится, что синус используется не в одной, а в нескольких программах, а потому исходный текст нашей функции удобно хранить в отдельном файле. Однако компилировать каждый раз один и тот же код довольно неразумно. Естественно сделать это лишь однажды и записать результат в так называемый '''объектный файл'''. Он не будет предназначен для исполнения, однако будет готов к компоновке: когда мы напишем еще одну программу, использующую синус, достаточно будет этот файл подложить в нужный момент компоновщику.

 1. Нужных нам функций может набраться довольно много. Наступит момент, когда мы поймем, что сотню функций не слишком-то удобно хранить в сотне файлов. Гораздо лучше собрать все, к примеру, математические функции в один большой файл --- архив специального вида. При сборке использующих эти функции программ компоновщик должен уметь разархивировать этот файл и забирать из него фрагменты --- отдельные скомпилированные функции. Такой архив --- сборник объектных файлов --- называется '''библиотекой'''. При компиляции любой из наших программ достаточно будет сказать: "Эта программа должна быть собрана с использованием математической библиотеки". Однако оказывается, что и такой подход порождает свои проблемы.

 1. Напишем 30 программ, использующих синус, и соберем их с поддержкой нашей математической библиотеки. Результатом будут 30 исполняемых файлов, в каждом из которых будет храниться один и тот же код для вычисления синуса. Понятно, что это ничем не мотивированный перерасход дискового пространства. Было бы гораздо удобней, если содержимое нашей библиотеки хранилось в файловой системе в единственном экземпляре. Но есть и более неприятная проблема: если библиотеку потребуется изменить (к примеру, если мы обнаружим ошибку, из-за которой синус нуля дает -7), то все использующие ее программы также потребуют пересборки (а если одну из них мы пересобрать забудем?). Выход один --- следует отказаться от принципа, согласно которому все необходимое для работы программы кладется внутрь ее исполняемого файла при компиляции. Решающая описанные проблемы схема выглядит следующим образом. При сборке наших программ указывается, что для их работы нужно подгрузить математическую библиотеку. Оформленные соответствующим способом библиотеки называются '''динамическими''': они не входят в исполняемый файл, а загружаются в память в момент запуска. Понятно, что если при запуске программы нужной для ее работы динамической библиотеки в нужном месте не окажется, то программа не запустится. Чтобы определить, какие динамические библиотеки нужны той или иной программе, пользуются утилитой ldd.

(конец отступления)

/lost+found --- в большинстве файловых систем по умолчанию создается этот каталог. В него могут помещаться результаты ремонта этой файловой системы --- потерянные и найденные файлы (файлы без имени, найденные при проверке, и пр.). В современных ФС, используемых в Линукс, обычно используется журналирование, так что оказавшиеся в lost+found файлы --- большая редкость.

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

/mnt --- каталог, предназначенный для подключаемых вручную (при помощи команды mount) устройств.

/opt --- каталог, предназначенный для не входящих в дистрибутив программных продуктов. Дисциплина оформления установки в /opt проста: каталог /opt/имя_продукта содержит собственные подкаталоги bin, etc, lib и другие. Чаще всего каталог /opt пуст.

/proc --- каталог с виртуальной файловой системой, специфичной для ОС Linux. Здесь в виде файлов и каталогов представлена структура процессов, а также сведения о самой ОС.

/root --- домашний каталог суперпользователя. Его не принято хранить в /home, чтобы суперпользовательские данные были доступны и в случае невозможности подключения /home.

/sbin --- каталог для тех использующихся при старте исполняемых файлов, которые не применяются для решения пользовательских задач. Хранящиеся здесь программы нужны для функционирования самой ОС: большинство из них связаны с разметкой диска, работой с внешними устройствами вообще, сетевыми приложениями и пр.

/srb --- каталог для раздаваемых (по сети) файлов, например сетевой файловой системы. Здесь, к примеру, должны лежать данные, доступ к которым предоставляется по протоколу FTP.

/sys --- каталог для еще одной виртуальной файловой системы. Здесь представлена структура аппаратного обеспечения компьютера в том виде, в котором ее воспринимает ядро ОС. Этот каталог удобно использовать, чтобы узнать, что Линукс "думает" об установленном железе. Эта функция может быть полезна как опытным пользователям, так и "роботам".

/tmp --- каталог для хранения временных файлов.

/var --- каталог, предназначенный для данных, размер и количество которых заранее неизвестны:

 * /var/cache --- разного рода кэши;
 * /var/db --- базы данных нетекстового формата;
 * /var/lib --- специальные файлы различных служб (в ПСПО ALT Linux здесь находятся, к примеру, изолированные окружения);
 * /var/lock --- файлы блокировки (запускаемые программы могут создавать здесь файлы, чтобы другие программы по наличию или отсутствию этих файлов получали информацию об их состоянии);
 * /var/log --- системные журналы;
 * /var/mail --- списки почтовых очередей;
 * /var/opt --- данные установленных в /opt программ;
 * /var/preserv --- сюда могут периодически копироваться различные составляющие системы (к примеру, содержимое /etc);
 * /var/run --- информация о том, какие запущены подсистемы (services) и что в этих подсистемах происходит (например, сюда помещаются идентификаторы соответствующих процессов).

/usr --- особый каталог с собственной внутренней иерархией подкаталогов. Мы отметим лишь некоторые из его подкаталогов.

 * /usr/bin, /usr/lib, /usr/sbin --- каталоги, аналогичные /bin, /lib и /sbin соответственно, с той разницей, что здесь лежат не являющиеся необходимыми для выведения системы в штатный режим файлы (программы, библиотеки, суперпользовательские утилиты). Так, /usr/bin содержит подавляющее большинство пользовательских приложений, /usr/lib --- пользовательских библиотек (в том числе необходимых для программирования).
 * /usr/share --- каталог для хранения архитектурно-независимых данных (соответствующие файлы одинаково выглядят, к примеру, на 32- и 64-разрядных машинах). Понятно, что бинарные приложения сюда поместить нельзя (они принципиально отличны), а вот, например, документацию --- вполне (она располагается в /usr/share/doc).

----
Line 46: Line 72:
|| 0 || 1 || 1 || 1 || || 1 || ConstantinYershow, DmitryChistikov, MaximByshevskiKonopko || || || || 40 || 1 || 1 || 1 || || 1 || ConstantinYershow, DmitryChistikov, MaximByshevskiKonopko || || ||
----
CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

FHS

Иерархия стандартных каталогов в Линукс достаточно жестко предопределена. Файловая система образует единую структуру --- дерево каталогов, "растущее" из корня (каталог /). Определенная группа людей выпускает ревизии документа под названием Filesystem Hierarchy Standard (FHS), в который включаются рекомендации по поводу того, как должна выглядеть файловая система в POSIX-совместимой ОС. В ПСПО ALT Linux данный документ поставляется в пакете с соответствующим названием --- fhs.

Согласно FHS, каждый из подкаталогов корневого каталога имеет стандартное имя и заранее определенное назначение. Опишем их вкратце.

/bin содержит используемые при старте исполняемые файлы, необходимые для выведения системы в штатный режим.

/boot содержит файлы, используемые в процессе досистемной загрузки. Как правило, это ядро ОС, виртуальный диск (как ядер, так и виртуальных дисков может быть несколько), иногда --- загрузчик (если используется Grub).

/dev --- каталог для "специальных файлов", предоставляющих возможность работать со внешними устройствами системы, используя только файловые операции. Поскольку внешнее устройство --- сущность более сложная, чем файл, то помимо обычных файловых операций есть файловая операция управления вводом-выводом --- ioctl. Каждому устройству может соответствовать свой формат ioctl. Большинство файлов в каталоге /dev обычно используются не пользователем, а самой системой.

/etc --- каталог для общесистемных конфигурационных (настроечных) файлов. Настройка системы системным администратором сводится в первую очередь к изменению содержимого каталога /etc. Сохранение всего /etc и базы данных установленных пакетов делает восстановление ОС довольно несложной операцией.

/home --- это каталог, в котором хранятся домашние каталоги пользователей.

/lib предназначен для хранения библиотек, необходимых для старта системы.

Отступление: библиотеки

  1. Напишем программу, использующую функцию синус. Предположим, что взять реализацию самой этой функции нам негде, и напишем собственную реализацию известного алгоритма. Быстро выяснится, что синус используется не в одной, а в нескольких программах, а потому исходный текст нашей функции удобно хранить в отдельном файле. Однако компилировать каждый раз один и тот же код довольно неразумно. Естественно сделать это лишь однажды и записать результат в так называемый объектный файл. Он не будет предназначен для исполнения, однако будет готов к компоновке: когда мы напишем еще одну программу, использующую синус, достаточно будет этот файл подложить в нужный момент компоновщику.

  2. Нужных нам функций может набраться довольно много. Наступит момент, когда мы поймем, что сотню функций не слишком-то удобно хранить в сотне файлов. Гораздо лучше собрать все, к примеру, математические функции в один большой файл --- архив специального вида. При сборке использующих эти функции программ компоновщик должен уметь разархивировать этот файл и забирать из него фрагменты --- отдельные скомпилированные функции. Такой архив --- сборник объектных файлов --- называется библиотекой. При компиляции любой из наших программ достаточно будет сказать: "Эта программа должна быть собрана с использованием математической библиотеки". Однако оказывается, что и такой подход порождает свои проблемы.

  3. Напишем 30 программ, использующих синус, и соберем их с поддержкой нашей математической библиотеки. Результатом будут 30 исполняемых файлов, в каждом из которых будет храниться один и тот же код для вычисления синуса. Понятно, что это ничем не мотивированный перерасход дискового пространства. Было бы гораздо удобней, если содержимое нашей библиотеки хранилось в файловой системе в единственном экземпляре. Но есть и более неприятная проблема: если библиотеку потребуется изменить (к примеру, если мы обнаружим ошибку, из-за которой синус нуля дает -7), то все использующие ее программы также потребуют пересборки (а если одну из них мы пересобрать забудем?). Выход один --- следует отказаться от принципа, согласно которому все необходимое для работы программы кладется внутрь ее исполняемого файла при компиляции. Решающая описанные проблемы схема выглядит следующим образом. При сборке наших программ указывается, что для их работы нужно подгрузить математическую библиотеку. Оформленные соответствующим способом библиотеки называются динамическими: они не входят в исполняемый файл, а загружаются в память в момент запуска. Понятно, что если при запуске программы нужной для ее работы динамической библиотеки в нужном месте не окажется, то программа не запустится. Чтобы определить, какие динамические библиотеки нужны той или иной программе, пользуются утилитой ldd.

(конец отступления)

/lost+found --- в большинстве файловых систем по умолчанию создается этот каталог. В него могут помещаться результаты ремонта этой файловой системы --- потерянные и найденные файлы (файлы без имени, найденные при проверке, и пр.). В современных ФС, используемых в Линукс, обычно используется журналирование, так что оказавшиеся в lost+found файлы --- большая редкость.

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

/mnt --- каталог, предназначенный для подключаемых вручную (при помощи команды mount) устройств.

/opt --- каталог, предназначенный для не входящих в дистрибутив программных продуктов. Дисциплина оформления установки в /opt проста: каталог /opt/имя_продукта содержит собственные подкаталоги bin, etc, lib и другие. Чаще всего каталог /opt пуст.

/proc --- каталог с виртуальной файловой системой, специфичной для ОС Linux. Здесь в виде файлов и каталогов представлена структура процессов, а также сведения о самой ОС.

/root --- домашний каталог суперпользователя. Его не принято хранить в /home, чтобы суперпользовательские данные были доступны и в случае невозможности подключения /home.

/sbin --- каталог для тех использующихся при старте исполняемых файлов, которые не применяются для решения пользовательских задач. Хранящиеся здесь программы нужны для функционирования самой ОС: большинство из них связаны с разметкой диска, работой с внешними устройствами вообще, сетевыми приложениями и пр.

/srb --- каталог для раздаваемых (по сети) файлов, например сетевой файловой системы. Здесь, к примеру, должны лежать данные, доступ к которым предоставляется по протоколу FTP.

/sys --- каталог для еще одной виртуальной файловой системы. Здесь представлена структура аппаратного обеспечения компьютера в том виде, в котором ее воспринимает ядро ОС. Этот каталог удобно использовать, чтобы узнать, что Линукс "думает" об установленном железе. Эта функция может быть полезна как опытным пользователям, так и "роботам".

/tmp --- каталог для хранения временных файлов.

/var --- каталог, предназначенный для данных, размер и количество которых заранее неизвестны:

  • /var/cache --- разного рода кэши;
  • /var/db --- базы данных нетекстового формата;
  • /var/lib --- специальные файлы различных служб (в ПСПО ALT Linux здесь находятся, к примеру, изолированные окружения);
  • /var/lock --- файлы блокировки (запускаемые программы могут создавать здесь файлы, чтобы другие программы по наличию или отсутствию этих файлов получали информацию об их состоянии);
  • /var/log --- системные журналы;
  • /var/mail --- списки почтовых очередей;
  • /var/opt --- данные установленных в /opt программ;
  • /var/preserv --- сюда могут периодически копироваться различные составляющие системы (к примеру, содержимое /etc);
  • /var/run --- информация о том, какие запущены подсистемы (services) и что в этих подсистемах происходит (например, сюда помещаются идентификаторы соответствующих процессов).

/usr --- особый каталог с собственной внутренней иерархией подкаталогов. Мы отметим лишь некоторые из его подкаталогов.

  • /usr/bin, /usr/lib, /usr/sbin --- каталоги, аналогичные /bin, /lib и /sbin соответственно, с той разницей, что здесь лежат не являющиеся необходимыми для выведения системы в штатный режим файлы (программы, библиотеки, суперпользовательские утилиты). Так, /usr/bin содержит подавляющее большинство пользовательских приложений, /usr/lib --- пользовательских библиотек (в том числе необходимых для программирования).
  • /usr/share --- каталог для хранения архитектурно-независимых данных (соответствующие файлы одинаково выглядят, к примеру, на 32- и 64-разрядных машинах). Понятно, что бинарные приложения сюда поместить нельзя (они принципиально отличны), а вот, например, документацию --- вполне (она располагается в /usr/share/doc).


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

40

1

1

1

1

ConstantinYershow, DmitryChistikov, MaximByshevskiKonopko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

PspoClasses/080718/05FHS (last edited 2008-10-09 18:44:27 by MaximByshevskiKonopko)