Пятница, 26.04.2024, 15:49
Приветствую Вас Гость

SYSTEM ADMINISTRATOR

Меню
Разделы
Друзья
Реклама
Наша кнопка
Опрос
Нужен ли нам форум?
Всего ответов: 64
Главная » 2012 » Апрель » 2 » Типы файлов в *nix
14:28
Типы файлов в *nix

В Linux определены семь типов файлов:

    Обычные файлы;

    Каталоги;

    Файлы байт-ориентированных (символьных) устройств;

    Файлы блочно-ориентированных (блочных) устройств;

    Локальные сокеты;

    Именованные каналы (FIFO);

    Символические ссылки.

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

Определить тип существующего файла можно с помощью команды ls -ld. Первый символ в строке вывода обозначает тип объекта. Возможны следующие коды:

Тип файла

Символ

Создается командой

Удаляется командой

Обычный файл

-

редакторы, cp и т.д.

rm

Каталог

d

mkdir

rmdir, rm -r

Файл байт-ориентированного устройства

c

mknod

rm

Файл блочно-ориентированного устройства

b

mknod

rm

Unix - сокет

s

socket(2)

rm

Именованный канал

p

mknod

rm

Символическая ссылка

l

ln -s

rm

Для поиска файлов, определенного типа, необходимо воспользоваться командой find:

find / -type p -ls

В данном случае мы производили поиск именованных каналов (-type p). Подставляя в данном шаблоне вместо буквы р буквы c, l и т.д., вы организуете поиск файлов соответствующих типов.

Обычные файлы

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

Каталоги

Каталог хранит именованные ссылки на другие файлы. Он создается командой mkdir и удаляется (при условии, что он пуст) командой rmdir. Непустые каталоги можно удалить командой rm -г. Пользуйтесь данной командой ОЧЕНЬ ОСТОРОЖНО, особенно если вы работаете под суперпользователем.

Специальные ссылки '.' и '..' обозначают, соответственно, сам каталог и его родительский каталог. Такие ссылки нельзя удалить. Поскольку корневой каталог находится на вершине иерархии, ссылка '..' в нем эквивалентна ссылке '.'.

Имя файла в действительности хранится в родительском каталоге, а не в самом файле. На файл можно ссылаться из нескольких каталогов одновременно и даже из нескольких элементов одного и того же каталога, причем у всех ссылок могут быть разные имена. Это создает иллюзию того, что файл одновременно присутствует в разных каталогах.

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

Такие ссылки обычно называют жесткими, чтобы отличать их от символических ("мягких") ссылок. Жесткие ссылки создаются командой ln и удаляются командой rm. Синтаксис команды ln легко запомнить, так как она аналогична команде ср.

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

Базовое представление об устройствах

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

Файлы байт-ориентированных и блочно-ориентированных устройств

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

Блочное устройство хранит данные и обеспечивает одинаковый доступ ко всем фрагментам информации; блочными устройствами являются гибкие и жесткие диски. Блочные устройства иногда называют устройствами с произвольным доступом. При выполнении некоторых операций с файлом ядро системы узнает о том, что этот файл является устройством, на основании информации о типе этого файла (а не о его местонахождении). Индексный дескриптор устройства содержит информацию, в которой описываются старший и младший номер устройства Старший номер устрой указывает ядру, какой из его драйверов этот номер представляет. Например, блочное устройство со старшим номером 3 представляет собой жесткий диск IDE, а блочное устройство со старшим номером устройства 8 — диск SCSI. Каждый драйвер отвечает за определенные экземпляры аппаратного обеспечения, которыми он управляет и они обозначены младшим номером устройства. Например, диск SCSI с младшим номером представляет весь первый диск SCSI, а младшие номера от 1 до 15 представляют количество возможных разделов на нем. Команда ls позволяет вывести на печать старшие и младшие номера устройств:

Загадочная опция (--sort=none) команды ls гарантирует распечатку устройств в правильном порядке. Если бы в этой команде было указано только ls -l, записи были бы отсортированы в алфавитном порядке, следовательно, устройство /dev/sda10 появилось бы раньше /dev/sda2.

Напомню, что буква b в крайней левой позиции кода прав доступа в выводе этой команды указывает, что каждое из этих устройств является блочным. (Символьные устройства обозначаются буквой с.) Старшие и младшие номера устройств находятся непосредственно перед полем времени и разделены запятыми. (В выводе ls -l в этой позиции указан размер файла.)

Файлы устройств позволяют программам получать доступ к аппаратным средствам и периферийному оборудованию системы. На этапе конфигурирования к ядру подключаются те модули, которые "знают", как взаимодействовать с каждым из имеющихся устройств. За управление конкретным устройством отвечает специальный модуль, называемый драйвером устройства.

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

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

Файлы устройств создаются командой mknod и удаляются командой rm. В большинстве систем имеется сценарий /dev/MAKEDEV, который создает стандартные наборы управляющих файлов для основных устройств.

Локальные сокеты

Установленные посредством сокетов соединения позволяют процессам взаимодействовать, не подвергаясь влиянию других процессов. В Linux поддерживается несколько видов сокетов, использование которых, как правило, предполагает наличие сети. Локальные сокеты доступны только на локальном компьютере, и обращение к ним осуществляется через специальные объекты файловой системы, а не через сетевые порты. Иногда такие сокеты называют UNIX-сокетами.

Несмотря на то что другие процессы распознают файлы сокетов как элементы каталогов, только процессы, между которыми установлено соответствующее соединение, могут осуществлять над файлом сокета операции чтения и записи. С локальными сокетами работают системы печати, X Windows и Syslog.

Именованные каналы

Подобно локальным сокетам, именованные каналы обеспечивают взаимодействие двух процессов, выполняемых на одном компьютере. Такие каналы еще называют файлами FIFO (First In, First Out — первым поступил, первым обслужен). Они создаются командой mknod и удаляются командой rm. Именованные каналы и локальные сокеты встречаются довольно редко и еще реже требуют административного вмешательства.

Символические ссылки

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

Символические ссылки создаются командой ln -s и удаляются командой rm. Они могут содержать произвольное имя, т.е. разрешается указывать на файлы, хранящиеся в других файловых системах, и даже на несуществующие файлы. Иногда несколько символических ссылок образуют петлю. Символическая ссылка может хранить как полное, так и сокращенное имя файла. Например:

Следует обратить внимание на второе поле, выводимое командой ls. В нем указывается количество жестких ссылок на данный файл.

Категория: *nix | Просмотров: 2322 | Добавил: AinCross | Теги: *Nix, типы файлов | Рейтинг: 3.0/2
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Регистрация
Поиск
Пользовательский поиск
Реклама
Архив записей
Календарь
«  Апрель 2012  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
23242526272829
30
Считалки
Яндекс.Метрика

Онлайн всего: 1
Гостей: 1
Пользователей: 0