Служебные элементы каталога

Практическая работа №7,8,9.

Тема: «Установка и настройка ОС Linux»

Цель работы: Ознакомление с общими аспектами устройства файловых систем *nix. Освоить элементарные операции над файлами.

Теоретические материалы

Начальные сведения о файловых системах *nix

В операционных системах за хранение информации на носителях данных отмечается специальная подсистема — файловая подсистема (чаще говорят «файловая система»).

Объекты файловой системы

Файловая система организует данные в файлы. Каждый файл имеет уникальное имя, идентифицирующее его, и некий атрибуты (дата и время создания, дата и время последнего доступа, дата и время последней модификации и прочее). Стуктура имени файла, а также набор его атрибутов определяются спецификой файловой системы.

Таким образом, получается, что данные хранятся в файлах, а файловая система реализует взаимно-однозначное соответствие: имя файла место на диске.

Особым видом файла является каталог, иногда также говорят «папка» или «директория». Каталог хранит информацию о других файлах и, по сути, представляет собой своеобразное «оглавление». В отличие от обычного файла, чтение и запись каталогов производит сама файловая система. В моменты создания нового файла, удаления или модификации существующего файла в каталог самой файловой системой делаются необходимые изменения файла-каталога.

С точки зрения пользователя получается что каталог «содержит в себе» файлы.

Один из каталогов является «вершиной» файловой системы (а выражаясь на языке теории графов — «корнем» файлового дерева), в нём содержатся все остальные каталоги и файлы.

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

В Linux корневой каталог обозначается «/». Полные имена (пути) всех остальных каталогов получаются из «/», к которому дописываются справа имена последовательно вложенных друг в друга каталогов. Имена каталогов в пути также разделяются символом «/» («слэш»). Например, запись /home обозначает каталог «home» в корневом каталоге («/»), а /home/user — каталог «user» в каталоге «home» (который, в свою очередь, в корневом каталоге). Перечисленные таким образом каталоги, завершающиеся именем файла, составляют полный путь к файлу. А имя файла с указанным перед ним полным путём называется полным именем файла.

Относительный путь строится точно так же, как и полный — перечислением через «/» всех названий каталогов, встретившихся при движении к искомому каталогу или файлу. Между полным путём и относительным есть только одно существенное различие: относительный путь начинается от текущего каталога, в то время как полный путь всегда начинается от корневого каталога. Относительный путь любого файла или каталога в файловой системе может иметь любую конфигурацию: чтобы добраться до искомого файла можно двигаться как по направлению к корневому каталогу, так и от него. Linux различает полный и относительный пути очень просто: если имя объекта начинается на «/» — это полный путь, в любом другом случае — относительный.

Служебные элементы каталога

В каждом каталоге, кроме корневого, обязательно присутствуют два специальных элемента: «.», «..». Элемент «.» (точка «.») является аналогом местоимения «я», псевдонимом текущего каталога. Элемент «..» является псевдонимом каталога верхнего уровня.

Рассмотрим на примере. Пусть в корневом каталоге находится каталог «a», в каталоге «a» находится каталог «b». В корневом каталоге есть файл «0.txt», каталоге «a» есть файл «1.txt», в каталоге «b» есть файл «2.txt». Находясь в каталоге «b» мы можем обратиться к файлу «2.txt» следующим образом: «./2.txt». Находясь всё в том же каталоге «b» мы можем обратиться к файлу «1.txt» (находящимся на уровень выше) следующим образом: «../1.txt». Чтобы обратиться к файлу «0.txt», находясь в каталоге «b», нужно будет написать: «../../0.txt».

Специальные типы файлов

Кроме «обычных» файлов мы уже рассмотрели специальный тип файлов — каталог. Также в файловых системах *nix существуют и другие специальные типы файлов. Укажем наиболее распространённые из них:

1. Файлы символьного режима: эти файлы являются либо специальными системными файлами (типа /dev/null, который мы уже рассматривали), либо периферийными устройствами (последовательные или параллельные порты), характерной особенностью которых является то, что их содержимое (если оно есть) не буферизуется (т.е. оно не хранится в памяти). Такие файлы идентифицируются буквой c при выводе команды ls -l.

2. Файлы блочного режима: эти файлы являются периферийными устройствами, и, в отличие от символьных файлов, их содержимое буферизуется. Например, файлами этой категории являются жесткие диски, разделы на жестком диске, дисководы, CD-ROM и так далее. Примеры файлов блочного доступа: /dev/hda, /dev/sda5. В информации, выводимой командой ls -l, они идентифицируются буквой b.

3. Символические ссылки: эти файлы являются очень распространенными и часто используется. Как следует из их имени, их цель - связывать файлы символическим способом, что означает, что они являются файлами, содержащими путь к другому файлу. Они могут и не указывать на существующий файл. Очень часто их называют «мягкими ссылками», и идентифицируются они буквой «l». При обращении к символической ссылке в командной строке или в программе, на самом деле происходит обращение к файлу, на который она указывает, если таковой существует.

4. Именованные каналы: очень похожи на каналы, используемые в командах shell'а, но с той разницей, что у этих каналов и в самом деле есть имена. Однако они очень редко применяются. При выводе команды ls -l именованные каналы идентифицируются буквой p.

5. Сокеты: это тип файла для всех сетевых подключений, но только некоторые из них имеют названия. А самое главное, что существует несколько типов сокетов, а связь может быть установлена только через один из этих типов. Такие файлы идентифицируются буквой s.

Монтирование

Корневой каталог в Linux всегда только один, а все остальные каталоги в него вложены, т. е. для пользователя файловая система представляет собой единое целое. В действительности, разные части файловой системы могут находиться на совершенно разных устройствах: разных разделах жёсткого диска, на разнообразных съёмных носителях (лазерных дисках, дискетах, флэш-картах), даже на других компьютерах (с доступом через сеть). Для того, чтобы соорудить из этого хозяйства единое дерево с одним корнем, используется процедура монтирования.

Монтирование — это подключение в один из каталогов целой файловой системы, находящейся где-то на другом устройстве. Эту операцию можно представить как «прививание» ветки к дереву. Для монтирования необходим пустой каталог — он называется точкой монтирования. Точкой монтирования может служить любой каталог, никаких ограничений на этот счёт в Linux нет. При помощи команды mount мы объявляем, что в данном каталоге (пока пустом) нужно отображать файловую систему, доступную на таком-то устройстве или же по сети. После этой операции в каталоге (точке монтирования) появятся все те файлы и каталоги, которые находятся на соответствующем устройстве. В результате пользователь может даже и не знать, на каком устройстве какие файлы располагаются.

Подключённую таким образом («смонтированную») файловую систему можно в любой момент отключить — размонтировать (для этого имеется специальная команда umount), после чего тот каталог, куда она была смонтирована, снова окажется пустым.

Для Linux самой важной является корневая файловая система (root filesystem). Именно к ней затем будут подключаться (монтироваться) все остальные файловые системы на других устройствах. Обратите внимание, что корневая файловая система тоже монтируется, но только не к другой файловой системе, а к «самой Linux», причём точкой монтирования служит «/» (корневой каталог). Поэтому при загрузке системы прежде всего монтируется корневая файловая система, а при останове она размонтируется (в последнюю очередь).

Пользователю обычно не требуется выполнять монтирование и размонтирование вручную: при загрузке системы будут смонтированы все устройства, на которых хранятся части файловой системы, а при останове (перед выключением) системы все они будут размонтированы. Файловые системы на съёмных носителях (лазерных дисках, дискетах и пр.) также монтируются и размонтируются автоматически — либо при подключении носителя, либо при обращении к соответствующему каталогу.

Стандартные каталоги

В файловой системе *nix все размещено упорядочено. Каждый каталог имеет свое назначение, которое регламентируется документом под название FHS (Filesystem Hierarchy Standart — стандарт структуры файловой системы). Кратко перечислим описания содержания основных каталогов согласно данному стандарту.

/bin

Содержит исполняемые файлы самых необходимых для работы системы программ. Каталог /bin не содержит подкаталогов.

/boot

Здесь находятся само ядро системы и файлы, необходимые для его загрузки.

/dev

Каталог /dev содержит файлы устройств.

/etc

Это каталог конфигурационных файлов, т.е. файлов, содержащих информацию о настройках системы (например, настройки программ).

/home

Содержит домашние каталоги пользователей системы.

/lib

Здесь находятся библиотеки (функции, необходимые многим программам).

/media

Содержит подкаталоги, которые используются как точки монтирования для сменных устройств (CD-ROM'ов, floppy-дисков, флешек и др.)

/mnt

Данный каталог (или его подкаталоги) может служить точкой монтирования для временно подключаемых файловых систем.

/proc

Содержит файлы находящиеся не на диске, а в оперативной памяти (виртуальные файлы) и содержащие информацию о выполняющихся в системе процессах.

/root

Это домашний каталог администратора системы.

/sbin

Содержит исполняемые программы, как и каталог /bin. Однако использовать программы, находящиеся в этом каталоге может только администратор системы (root).

/tmp

Каталог для временных файлов, хранящих промежуточные данные, необходимых для работы тех или иных программ, и удаляющиеся после завершения работы программ.

/usr

Каталог для большинства программ, которые не имеют значения для загрузки системы. Структура этого каталога фактически дублирует структуру корневого каталога.

/var

Содержит данные, которые были получены в процессе работы одних программ и должны быть переданы другим. Также содержит журналы со сведениями о работе системы.

Остановимся по-подробнее на двух достаточно важных для пользователя каталогах: /home и /mnt (и/или /media). Важны они потому, что почти любой пользователь в процессе своей работы на компьютере будет сохранять данные, а также может уже иметь необходимые ему файлы, доступ к которым желательно обеспечить.

В операционных системах на базе ядра Linux при создании пользователей автоматически в каталоге /home создаются домашние директории. Сколько пользователей зарегистрировано в системе, столько и будет подкаталогов в /home. Имена этих подкаталогов обычно совпадают с логинами (регистрационными именами) пользователей. Аналогом такого каталога в операционной системе Windows является папка «Мои документы». И в Linux и в Windows в эти каталоги по умолчанию сохраняются все пользовательские файлы. Однако в Linux, помимо файлов, которые создал сам пользователь, сохраняются еще и файлы всех его настроек для различных программ (обычно эти файлы являются скрытыми). Внутри /home/userX присутствует каталог Desktop — это каталог "рабочего стола".

Каталог /mnt согласно стандарту FHS должен использоваться для временного подключения иных файловых систем. Что значит временного? Скорее всего это значит, что администратор системы в случае необходимости монтирует тот или иной диск. Затем, после того как раздел будет не нужен, отсоединяет его. Но если прописать соответствующую строчку в файле /etc/fstab, то раздел жесткого диски будет монтироваться автоматически при загрузке системы. Возникает вопрос: можно ли считать это временным подключением? Каталог /media (как было указано выше) предназначен для монтирования сменных накопителей. На сегодняшний день многие дистрибутивы автоматически монтируют как разделы жесткого диска, так и сменные устройства в каталоги /mnt и /media. Однако, практически, монтирование разделов можно организовать в почти любой каталог.

Задание.

Установить операционную систему Linux на виртуальную машину.

Контрольные вопросы.

1. Перечислите объекты файловой системы.

2. Перечислите служебные элементы каталога.

3. Что такое монтирование?

Задание на дом:

Выполнить отчет о проделанной работе.