Что такое блочные файлы linux

Типы файлов в Linux

1. Введение

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

2. Идентификация типов файлов в Linux

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

Ниже пример вывода этой команды.

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

— : обычный файл
d : директория
c : файл символьного устройства
b : файл блочного устройства
s : файл локального сокета
p : именованный канал
l : символическая ссылка

2.1. Обычный файл

Обычный файл — это самый распространенный тип файлов в системе Linux. Он объединяет самые различные виды файлов, такие как текст, изображения, бинарные файлы, библиотеки и т.д. Обычный файл вы можете создать с помощью команды:

Первый символ в выводе команды ls, в данном случае «-«, представляет собой код идентификации для обычного файла. Для удаления обычного файла используется команда:

2.2. Директория

Директория — это второй самый распространенный тип файлов в Linux. Директории могут быть созданы с помощью команды mkdir:

Как уже говорилось ранее, директории идентифицируются по символу «d» в выводе команды ls. Для удаления директорий используется команда rmdir.

Если вы попытаетесь с помощью команды rmdir удалить директорию, в которой есть файлы, то получите сообщение об ошибке:

В этом случае необходимо использовать команду:

2.3. Символьное устройство

Файлы символьных и блочных устройств позволяют пользователям и программам обмениваться данными с периферийными устройствами, например:

В данном случае символьное устройство — это модуль vmware.

2.4. Блочное устройство

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

2.5. Сокеты локального домена

Сокеты локального домена используются для обмена данными между процессами. В основном они используются такими службами, как X windows, syslog и т.д.

Сокеты могут быть созданы с помощью системного вызова socket, а удалены с помощью системной функции unlink или команд rm.

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

Как и локальные сокеты, именованные каналы позволяют осуществлять обмен данными между локальными процессами. Они могут быть созданы с помощью команды mknod, а удалены с помощью команды rm.

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

С посощью символических ссылок администратор может присвоить одному файлу или директории несколько идентичностей. Символическая ссылка является указателем на оригинальный файл. Существует два типа символических ссылок:
— жесткие ссылки;
— мягкие ссылки.

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

Для удаления символической ссылки мы можем использовать команды unlink или rm.

3. Заключение

Как системный администратор, вы будете в основном работать с обычными файлами, директориями, блочными или символьными устройствами. Программист также часто имеет дело с локальными сокетами и именованными каналами.

Источник

Linux.yaroslavl.ru

Всё Является Файлом
Пред. Глава 9. Файловая Система Linux След.

Всё Является Файлом

Стартовое Руководство Пользователя описывает концепцию прав доступа к файлам, а также понятия владельца файла, но в действительности для файловых систем UNIX (это относится и к GNU/Linux’ ext2fs) требуется, чтобы мы ввели определение файла.

В данном случае, “всё” действительно означает всё. Жесткий диск, разделы на жестком диске, параллельные порты, подключение к web-сайтам, Ethernet карточка, все они являются файлами. Даже каталоги — это файлы. В GNU/Linux существует много типов файлов в дополнение к стандартным файлам и каталогам. Обратите внимание, здесь под типом файла, мы не подразумеваем содержимое файла: в GNU/Linux и любой другой UNIX системах, файл, будь это текст, или PNG картинка, или двоичный файл, или что-то подобное, является только потоком байтов. Разделение файлов согласно их содержанию оставлено приложениям.

Различные Типы Файлов

Если вы помните, при вводе команды ls -l, символ перед правами доступа идентифицирует тип файла. Мы уже видели два типа файлов: обычный файл (-) и каталог (d). Блуждая по диску, вы также можете встретить и другие типы файлов:

Читайте также:  Как правильно почистить папку windows

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

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

Символические ссылки: эти файлы очень широко используется в Mandrake Linux , например в процедуре запуска системы (см. главу Глава 11. Файлы Загрузки: init sysv). Название этих файлов отражает цель. Символические ссылки связаны с файлом символическим способом, что означает, что такие файлы могут указывать на существующий файл. Подробнее об этом позже в этой главе. Символические ссылки очень часто (и неправильно, что будет показано позже) называют “мягкими (soft) ссылками”. Такие файлы идентифицируются символом 'l'.

Именованные каналы (pipes): очень похожи на каналы, используемые в shell, фактически разница только в том, что такие каналы имеют название. Именованные каналы очень редки. Маловероятно, что вы встретите хотя-бы один во время исследования файлового дерева. На всякий случай сообщаем что символ, идентифицирующий их — 'p'. Чтобы узнать больше об этом, взгляните сюда : “ Анонимные Каналы и Именованные Каналы”.

Сокеты (socket: розетка, разъем): Этот тип файла для всех сетевых подключений. Только некоторые из них имеют названия. Нужно заметить, что сокеты бывают нескольких типов, но эта тема выходит за рамки данной книги. Такие файлы идентифицированы символом 's'.

Вот примеры каждого типа файлов:

Inode

Inode является, вместе с принципом “Все есть файл”, фундаментальной частью файловой системы UNIX. Слово “inode” это сокращение от Information NODE (Информационный УЗЕЛ).

Inodes хранятся на диске в inode table (таблице информационных узлов). Они существуют для всех типов файлов, которые могут храниться в файловой системе, и это включает каталоги, именованные каналы, файлы символьного режима и так далее. Что приводит к другому известному выражению: “inode есть файл”. При помощи inode UNIX идентифицирует файл уникальным способом.

Иначе говоря UNIX не идентифицирует файл по его имени . Вместо этого используется номер [18] из таблицы inode. Причина для этого заключается в том, что файл может иметь несколько названий, или вообще не иметь никакого названия. Имя файла в UNIX, является только указателем на inode. Такой указатель называется link (линк или ссылка). Давайте рассмотрим ссылки более подробно.

[18] Важно: обратите внимание, что номер inode уникален в пределах файловой системы , что означает, что inode с тем же самым номером может существовать на другой файловой системе. Это приводит к различию между дисковым inode и inode в оперативной памяти. Два дисковых inode могут иметь один и тот же номер, если они находятся на двух различных файловых системах. В оперативной памяти inode имеет уникальный номер на всю систему.

Источник

Типы файлов Linux

В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Unix-подобная ОС не следит за расширениями файлов. Задача связать расширения файла с конкретным пользовательским приложением, в котором этот файл будет открываться, видимо лежит на какой-либо дополнительной программе. В свою очередь пользовательское приложение анализирует структуру данный файла, расширение ему также безразлично.

Таким образом, среди файловых атрибутов, хранящихся в операционной системе на базе ядра Linux, нет информации о типе данных в файле. Там есть информация о более существенном разделении, связанном с тем, что в Unix-подобных системах все объекты – это файлы. Все объекты весьма разнообразны. Поэтому тип файла в Linux – это скорее тип объекта, но не тип данных как в Windows.

В операционной системе GNU/Linux существуют следующие типы файлов: обычные файлы, каталоги, символьные ссылки, блочные устройства, символьные устройства, сокеты, каналы. Каждый тип имеет собственное обозначение одним символом. Знание этих символов нам пригодится в дальнейшем при изучении командной оболочки Bash.

Обычные файлы (-)

Сюда относятся все файлы с данными, играющими роль ценной информации сами по себе. Linux все-равно текстовый перед ним файл, исполняемый или картинка. В любом случае это будет обычный (regular) файл. Все они обозначаются знаком минус «-«. Остальные типы файлов считаются специальными (special).

Каталоги (d)

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

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

Читайте также:  Windows server 2016 remoteapp msi

В Unix-подобных системах один и тот же файл может существовать под разными именами и/или в разных каталогах: все имена будут связаны с одним и тем же индексным дескриптором (механизм жестких ссылок).

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

Символьные ссылки (l)

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

Выполнение символьной ссылки приводит к открытию файла, на который она указывает. Это аналог ярлыков в операционной системе Windows.

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

Символьные ссылки не содержат атрибутов файлов, на которые они указывают. У них есть собственные атрибуты.

Символьные (c) и блочные устройства (b)

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

К символьным устройствам обращение происходит последовательно (символ за символом). Примером символьного устройства может служить терминал.

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

Сокеты (s) и каналы (p)

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

Ключевым отличием канала от сокета является то, что канал однонаправлен. Через канал один процесс всегда передает данные второму, но не наоборот. Сокеты позволяют передавать данные в разных направлениях, т. е. осуществляют связь.

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

Команда file

Хотя выше было сказано, что Линукс не делает предположение о типе данных в обычном файле, есть специальная утилита, которая выполняет эту задачу, – программа file. Для этого она анализирует начало содержимого файла и находит в нем специальные «сигналы», характерные для определенного типа – бинарного файла, текстового, изображения и др.

На скриншоте также показано, что расширение для программы file безразлично. Файл flag – копия flag.png, и программа успешно его идентифицировала как изображение.

Команда file имеет множество различных ключей.

В примере файл 2020.ods является символьной ссылкой на файл, находящийся в другом каталоге, о чем нам говорит команда file без ключей. С помощью ключа -L мы можем узнать тип файла, на который ссылается файл-ссылка.

Курс с ответами к заданиям и дополнительными уроками:
android-приложение, pdf-версия.

Источник

Типы файлов в Linux

Философия операционных систем Unix гласит, что все есть файл. Это значит, что вся работа с этой операционной системой сводится к файлам. Поскольку Linux можно считать тоже потомком Unix, то эта концепция применима и здесь. Файлы это объекты, в которые мы записываем информацию и наши данные, исполняемые файлы, но кроме этих привычных нам понятий здесь есть файлы специального назначения — файлы устройств, файлы туннелей, сокетов и многое другое. Эта тема очень слабо освещена в интернете, поэтому в нашей сегодняшней статье мы рассмотрим типы файлов linux.

Пространство нашего жесткого диска занято файлами разных типов. Например, взять даже наш корневой раздел (/), при создании файла, файловая система записывает его в определенном формате на нужное физическое место жесткого диска. Всегда, для работы с файлами используется файловая система, но не всегда она записывает файлы на диск, файловая система может работать на лету, генерируя файлы, например, как procfs, с помощью которой может быть выполнена настройка ядра linux или записывать файлы в оперативную память, как tmpfs расположенная в папке /tmp. Но все это не имеет значения, ведь в любом случае мы имеем дело именно с файлами.

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

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

Типы файлов в Linux

Файлы в операционной системе Linux можно поделить на три основных типа:

  • Обычные файлы, для хранения информации
  • Специальные файлы — для устройств и туннелей
  • Директории

Дальше рассмотрим более подробно эти типы файлов linux.

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

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

  • Текстовые файлы
  • Исполняемые файлы
  • Файлы изображений
  • Файлы архивов
  • Файлы библиотек программ
  • И другие подобные типы

Утилита ls может определять тип файла в режиме списка, обычные файлы обозначаются черточкой, например:

Читайте также:  Playing steam games on windows 10

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

Посмотреть форматы файлов linux можно с помощью утилиты file. Например:

Система сообщила что это исполняемый файл, а теперь посмотрим обычный, текстовый:

Утилита умеет распознавать все известные форматы файлов. Чтобы узнать вывести все доступные форматы файлов linux наберите:

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

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

Блочные файлы — это файлы устройств, которые обеспечивают буферизованный доступ к аппаратным компонентам. При записи данных на жесткий диск или на флешку нет смысла записывать данные сразу же после их поступления. Так мы будем только понапрасну расходовать ресурс устройства и энергию. Можно подождать пока наберется достаточное количество данных а потом записать их за один раз. Эти данные и собираются в буфере. С помощью таких файлов, файловая система и другие утилиты могут обращаться к драйверам аппаратных устройств. Такие файлы могут передать большой блок данных за небольшой один раз.

Утилита ls обозначает блочные файлы буквой b, например, выберем все блочные файлы из каталога /dev:

ls -l /dev/ | grep «^b»

Утилита file, которую мы рассматривали в предыдущем разделе тоже умеет определять типы файлов:

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

Вы также можете отфильтровать их с помощью ls. Символьные файлы обозначаются буквой c (character):

ls -l /dev/ | grep «^c»

Символические ссылки — это файлы, которые указывают на другие файлы в системе по их имени. Они могут указывать как на обычные файлы, таки на каталоги или другие типы файлов в linux. По сути, это те же ярлыки Windows. В Linux еще есть жесткие ссылки, но они не имеют отношения к типу файлов, потому что реализованы на уровне файловой системы и считаются обычными файлами. Поскольку они указывают на одно и то же место на диске, это два разных файла, с одинаковым содержимым.

Но вернемся к символическим ссылкам. Утилита ls обозначает их буквой l (link):

ls -l /dev/ | grep «^l»

Создавать символические ссылки можно с помощью утилиты ln. Например:

ln -s file1.txt file2.txt

Можете использовать ls чтобы убедиться в том, что это ссылка. Проверьте таким же образом жесткие ссылки, чтобы убедиться, что то что я сказал о них — правда.

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

Обозначаются такие типы файлов linux буквой p (pipe):

ls -l /dev/ | grep «^p»

Чтобы создать именованный тоннель вы можете использовать утилиту mkfifo:

echo «test test test» > pipe1

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

while read line ;do echo «Data: ‘$line’ «; done

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

Файлы сокетов обозначаются буквой s:

ls -l /dev/ | grep «^s»

Создать сокет можно с помощью функции socket() на языке программирования Си, чтение и запись выполняется системными вызовами read() и write(). Но нам сейчас не нужно писать реальную программу, будет достаточно немного поиграться. Поэтому воспользуемся утилитой nc. Создаем Unix сокет:

nc -lU socket.sock

Подключаемся к нему из другой консоли:

nc -U socket.sock

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

Каталоги

Это специальные файлы, которые позволяют объединять другие и каталоги в группы для более простой навигации и поиска. Естественно, они могут содержать как обычные, так и специальные файлы, одним словом любые типы файлов ос linux. В системе Linux, файлы организуются в папки начиная от корня (/)

Обозначаются каталоги буквой d (directory):

Создать каталог в linux можно с помощью команды mkdir:

Заключение

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

Источник

Оцените статью