Differences between revisions 2 and 5 (spanning 3 versions)
Revision 2 as of 2008-07-21 17:47:34
Size: 7216
Editor: eSyr
Comment:
Revision 5 as of 2008-07-27 10:11:29
Size: 18934
Comment: привет Чистикову
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:
В отличие от виндоуса (где есть два каталога - windows и program files, а дальше чёрт ногу сломит), со стандартными каталогами линукса всё более-менее определено. Поскольку у нас есть ровно одна структура файловой системы, мы не пользуемся буквами A, B, C, D... у нас есть корень, из которого всё растёт, то можно себе позволить договориться о том, что именно растёт из этого корня. Есть группа людей, которые занимаются регулярной подготовкой документа FHS (filesystem hierarchy standart), в который включают всякие рекмендации по поводу того, как должна выглядеть файловая система в posix-совместимой системе. У нас даже есть пакет fhs, куда этот текст включается.
Line 5: Line 6:
Пскольку у нас есть ровно дна структура ФС, то можно позволить договориться о том, чт растёт из этого корня. Есть группа людей, которые занимаются подготовкой документа FHS, в который включают всякие рекмендации оп поводу того, где что лежит в posix-совместимой системе. В корне у нас находится несколько подкаталогов, больше их не должно быть. У каждого из каталогов, которые находятся в корне структуры каталогов, есть собственное назначение.
Line 7: Line 8:
В корне у нас находится неск. подкаталогов, больше их не должно быть. У каждого из каталогов есть собственное назначение.
 * /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/ содержит исполняемые файлы, причём только те, которые необходимы для вывода системы в штатный режим (то есть, те, которые используются при старте).

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

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

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

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

/lib/ - предназначен для хранения библитек, необходимых для старта системы.
Что такое библиотеки. Вы пишете программу, которая использует функцию синус. Вот вы её написали, подумали, что функцию синус неоткуда брать, и написали алгоритм, вычисляющий синус. Выясняется, что синус нужен в некоторых других программах, и хорошо бы синус держать в отдельном файле, чтобы все другие программы можно было компилировать, используя один и тот же исходный текст функции синус. Потом оказывается, что таких функций много и глупо компилировать это каждый раз. Хорошо бы скомпилировать все эти функции один раз, получится так называесый "объектный файл", то есть файл, который нельзя напрямую выполнить, но он уже готов к компиляции, и когда вы пишете программу, вы говорите "обратиться к функции синус", и происходит компановка: берётся ваш файл про функцию синус, там, арктангенс... и на этапе компановке все они сваливаются в одну кучу, после чего получается бинарник, состоящий из скомпилированного вашего файла и других файлов, взятых из других мест, уже заранее скомпилированных. Следующий этап - когда вам приходит в голову, что не надо сотни функций хранить в сотне файлов, и хорошо бы заархивировать их в один файл и чтобы компилятор умел разархивировать этот файл и из него забирать куски скомпилированных функций. И это (то есть сборник объектных файлов) уже называется библиотека. Там уже не исходный код на языке C, а некоторый скомпилированный вариант. И дальше получается следующее: вы говорите "скомпилировать программу с использованием (допустим,) математической библиотеки". Проблемы начинаются дальше - 30 программ собираются 30 раз, компилируются с поддержкой математической библиотеки и в результате получается 30 исполняемых файлов, в которых 30 раз хранится одно и то же. Жалко места. Было бы удобно, чтобы всё лежало в одном месте, а не в тридцати. Другая проблема хуже - при изменении библиотеки надо пересобирать все файлы, в которых использована эта библиотека. Выход - отказаться от того, чтобы при компиляции программы внутрь исполняемого файла кладётся всё необходимое для её работы. То есть, мы скомпилируем программу и в ней при компиляции напишем, что для того, чтобы она работала, нужно подгрузить математическую библиотеку. Обе задачи решены. Недостаток - программа не запустится, если библиотеки нет. Есть программа ldd, которая показывает, какие библиотеки (они называются динамическими, так как загружаются в память не в момент компиляции, а в момент запуска) нужны конкретной программе.

/lost+found/ - в каждой файловой системе создаётся этот каталог, в котором помещаются результаты ремонта этой файловой системы. То есть, здесь лежат потерянные и найденные файлы: файлы без имени, которые нашлись, и всякое такое. Последние неколько лет лектор не видел, чтобы что-то появлялось в этом каталоге в результате ремонта файловой системы, поскольку в линуксе используется журналирование, и с файловой системой может многое случиться, но именно потерянные файлы - это редкость.

/media/ - предназначен для автоматического подключения внешних устройств. Например, вы не хотите подключать руками, скажем, флешку, а делать так, чтобы какой-то робот определял, что это за флешка, и её в какое-то место подключал. Согласно стандарту, результат работ этого робота, после того как вы воткнули флешку в компьютер, должен быть таким: в каталоге /media/ должен быть создан подкаталог, внутри которого будет содержимое вашей флешки. Когда вы её извлекаете, этот каталог пустеет или удаляется.

/mnt/ - если устройство подключается вручную, при помощи команды mount, считается хорошим тоном подключать его не в каталог /media, а сюда. Чтобы не мешать роботу.

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

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

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

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

/srv/ происходит от слова server - там разрешается размещать файлы, которые мы раздаём всем окружающим, например, подключаем как сетевую файловую систему. По FHS, содержимое ftp-сервера должно быть тут.

/sys/ - ещё одна виртуальная файловая система, которая представляет в виде файловой системы структуру аппаратного обеспечения в том виде, в котором её воспринимает ядро линукса. Она удобна для того, чтобы тута заглянуть и узнать, что думает линукс о том железе, на котором вы работаете. Она удобна продвинутым пользователям, ещё более удобна для роботов, которые должны что-то распознать и на этом основании что-то делать.

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

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

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

/usr/

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

Всё. Остался только /usr. Давайте посмотрим в /usr. Обратите внимание, что в /usr есть каталог /bin, каталог /lib, какалог /sbin. Такие точно, как в корне. Дело в том, что в каталоге /usr в отличие от корневого хранятся все остальные программы. Если в /bin хранятся программы, нужные для вывода системы в штатный режим, а в /sbin хранятся системные программы, то в каталоге /usr/bin лежат все пользовательские приложения. Их там намного больше, чем в /bin. То же самое относится к /usr/lib: там лежат все библиотеки, необходимые для работы пользователя, в том числе необходмые для программирования. То же самое относится к /usr/sbin. Что ещё важно? Есть /usr/share, в него традиционно складываются файлы, которые не зависят от архитектуры, то есть, те, которые одинаково выглядят как на 32-разрядных машинах, так и на 64-разрядных машинах и вообще на машинах с другой архитектурой. То есть, вы же понимаете, что если мы берём машины с разной архитектурой, скажем, бинарные файлы у них разные принципиально, и бинарные файлы 64-разрядной архитектуры на 32-разрядной просто не запустятся. А что касается содержимого /usr/share, там много чего есть; самый главный каталг - это /usr/share/doc, где лежит вся документация. Предполагается, что представление докуентации не зависит от.
Line 47: Line 69:
|| 0 || 1 || 1 || 1 || || 1 || ConstantinYershow, DmitryChistikov, MaximByshevskiKonopko || || || || 20 || 1 || 1 || 1 || || 1 || ConstantinYershow, DmitryChistikov, MaximByshevskiKonopko || || ||

FHS

Очень важная тема. В отличие от виндоуса (где есть два каталога - windows и program files, а дальше чёрт ногу сломит), со стандартными каталогами линукса всё более-менее определено. Поскольку у нас есть ровно одна структура файловой системы, мы не пользуемся буквами A, B, C, D... у нас есть корень, из которого всё растёт, то можно себе позволить договориться о том, что именно растёт из этого корня. Есть группа людей, которые занимаются регулярной подготовкой документа FHS (filesystem hierarchy standart), в который включают всякие рекмендации по поводу того, как должна выглядеть файловая система в posix-совместимой системе. У нас даже есть пакет fhs, куда этот текст включается.

В корне у нас находится несколько подкаталогов, больше их не должно быть. У каждого из каталогов, которые находятся в корне структуры каталогов, есть собственное назначение.

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

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

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

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

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

/lib/ - предназначен для хранения библитек, необходимых для старта системы. Что такое библиотеки. Вы пишете программу, которая использует функцию синус. Вот вы её написали, подумали, что функцию синус неоткуда брать, и написали алгоритм, вычисляющий синус. Выясняется, что синус нужен в некоторых других программах, и хорошо бы синус держать в отдельном файле, чтобы все другие программы можно было компилировать, используя один и тот же исходный текст функции синус. Потом оказывается, что таких функций много и глупо компилировать это каждый раз. Хорошо бы скомпилировать все эти функции один раз, получится так называесый "объектный файл", то есть файл, который нельзя напрямую выполнить, но он уже готов к компиляции, и когда вы пишете программу, вы говорите "обратиться к функции синус", и происходит компановка: берётся ваш файл про функцию синус, там, арктангенс... и на этапе компановке все они сваливаются в одну кучу, после чего получается бинарник, состоящий из скомпилированного вашего файла и других файлов, взятых из других мест, уже заранее скомпилированных. Следующий этап - когда вам приходит в голову, что не надо сотни функций хранить в сотне файлов, и хорошо бы заархивировать их в один файл и чтобы компилятор умел разархивировать этот файл и из него забирать куски скомпилированных функций. И это (то есть сборник объектных файлов) уже называется библиотека. Там уже не исходный код на языке C, а некоторый скомпилированный вариант. И дальше получается следующее: вы говорите "скомпилировать программу с использованием (допустим,) математической библиотеки". Проблемы начинаются дальше - 30 программ собираются 30 раз, компилируются с поддержкой математической библиотеки и в результате получается 30 исполняемых файлов, в которых 30 раз хранится одно и то же. Жалко места. Было бы удобно, чтобы всё лежало в одном месте, а не в тридцати. Другая проблема хуже - при изменении библиотеки надо пересобирать все файлы, в которых использована эта библиотека. Выход - отказаться от того, чтобы при компиляции программы внутрь исполняемого файла кладётся всё необходимое для её работы. То есть, мы скомпилируем программу и в ней при компиляции напишем, что для того, чтобы она работала, нужно подгрузить математическую библиотеку. Обе задачи решены. Недостаток - программа не запустится, если библиотеки нет. Есть программа ldd, которая показывает, какие библиотеки (они называются динамическими, так как загружаются в память не в момент компиляции, а в момент запуска) нужны конкретной программе.

/lost+found/ - в каждой файловой системе создаётся этот каталог, в котором помещаются результаты ремонта этой файловой системы. То есть, здесь лежат потерянные и найденные файлы: файлы без имени, которые нашлись, и всякое такое. Последние неколько лет лектор не видел, чтобы что-то появлялось в этом каталоге в результате ремонта файловой системы, поскольку в линуксе используется журналирование, и с файловой системой может многое случиться, но именно потерянные файлы - это редкость.

/media/ - предназначен для автоматического подключения внешних устройств. Например, вы не хотите подключать руками, скажем, флешку, а делать так, чтобы какой-то робот определял, что это за флешка, и её в какое-то место подключал. Согласно стандарту, результат работ этого робота, после того как вы воткнули флешку в компьютер, должен быть таким: в каталоге /media/ должен быть создан подкаталог, внутри которого будет содержимое вашей флешки. Когда вы её извлекаете, этот каталог пустеет или удаляется.

/mnt/ - если устройство подключается вручную, при помощи команды mount, считается хорошим тоном подключать его не в каталог /media, а сюда. Чтобы не мешать роботу.

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

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

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

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

/srv/ происходит от слова server - там разрешается размещать файлы, которые мы раздаём всем окружающим, например, подключаем как сетевую файловую систему. По FHS, содержимое ftp-сервера должно быть тут.

/sys/ - ещё одна виртуальная файловая система, которая представляет в виде файловой системы структуру аппаратного обеспечения в том виде, в котором её воспринимает ядро линукса. Она удобна для того, чтобы тута заглянуть и узнать, что думает линукс о том железе, на котором вы работаете. Она удобна продвинутым пользователям, ещё более удобна для роботов, которые должны что-то распознать и на этом основании что-то делать.

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

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

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

/usr/

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

Всё. Остался только /usr. Давайте посмотрим в /usr. Обратите внимание, что в /usr есть каталог /bin, каталог /lib, какалог /sbin. Такие точно, как в корне. Дело в том, что в каталоге /usr в отличие от корневого хранятся все остальные программы. Если в /bin хранятся программы, нужные для вывода системы в штатный режим, а в /sbin хранятся системные программы, то в каталоге /usr/bin лежат все пользовательские приложения. Их там намного больше, чем в /bin. То же самое относится к /usr/lib: там лежат все библиотеки, необходимые для работы пользователя, в том числе необходмые для программирования. То же самое относится к /usr/sbin. Что ещё важно? Есть /usr/share, в него традиционно складываются файлы, которые не зависят от архитектуры, то есть, те, которые одинаково выглядят как на 32-разрядных машинах, так и на 64-разрядных машинах и вообще на машинах с другой архитектурой. То есть, вы же понимаете, что если мы берём машины с разной архитектурой, скажем, бинарные файлы у них разные принципиально, и бинарные файлы 64-разрядной архитектуры на 32-разрядной просто не запустятся. А что касается содержимого /usr/share, там много чего есть; самый главный каталг - это /usr/share/doc, где лежит вся документация. Предполагается, что представление докуентации не зависит от.


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

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

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

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

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

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

Level

Maintainer

Start date

End date

20

1

1

1

1

ConstantinYershow, DmitryChistikov, MaximByshevskiKonopko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

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