7146
Комментарий:
|
18934
привет Чистикову
|
Удаления помечены так. | Добавления помечены так. |
Строка 4: | Строка 4: |
В отличие от виндоуса (где есть два каталога - windows и program files, а дальше чёрт ногу сломит), со стандартными каталогами линукса всё более-менее определено. Поскольку у нас есть ровно одна структура файловой системы, мы не пользуемся буквами A, B, C, D... у нас есть корень, из которого всё растёт, то можно себе позволить договориться о том, что именно растёт из этого корня. Есть группа людей, которые занимаются регулярной подготовкой документа FHS (filesystem hierarchy standart), в который включают всякие рекмендации по поводу того, как должна выглядеть файловая система в posix-совместимой системе. У нас даже есть пакет fhs, куда этот текст включается. | |
Строка 5: | Строка 6: |
Пскольку у нас есть ровно дна структура ФС, то можно позволить договориться о том, чт растёт из этого корня. Есть группа людей, которые занимаются подготовкой документа FHS, в который включают всякие рекмендации оп поводу того, где что лежит в posix-совместимой системе. | В корне у нас находится несколько подкаталогов, больше их не должно быть. У каждого из каталогов, которые находятся в корне структуры каталогов, есть собственное назначение. |
Строка 7: | Строка 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, где лежит вся документация. Предполагается, что представление докуентации не зависит от. |
Строка 41: | Строка 63: |
---- | |
Строка 46: | Строка 69: |
|| 0 || 1 || 1 || 1 || || 1 || ConstantinYershow, DmitryChistikov, MaximByshevskiKonopko || || || | || 20 || 1 || 1 || 1 || || 1 || ConstantinYershow, DmitryChistikov, MaximByshevskiKonopko || || || ---- CategoryLectures CategoryPspo CategoryMpgu CategoryUneex |
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 |
|
|