Меню Рубрики

Типы данных в ос linux

Объяснение типов файлов в Linux

Если вы новичок в Linux или использовали его в течение нескольких месяцев, значит, вы слышали или читали утверждение, что «В Linux все является файлом».

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

Чтобы понять это, возьмем, например, объем пространства в корневом каталоге (/), который всегда используется различными типами файлов Linux. Когда вы создаете файл или передаете файл в вашу систему, он занимает некоторое место на физическом диске и считается, что он находится в определенном формате (тип файла).

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

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

Заметным преимуществом того, что все является файлом, это то, что один и тот же набор инструментов, утилит и API-интерфейсов Linux можно использовать в вышеупомянутых ресурсах ввода/вывода.

Хотя в Linux все является файлом, существуют определенные специальные файлы, которые представляют собой нечто большее, чем просто файл, например, сокеты и именованные каналы.

Какие существуют типы файлов в Linux?

В Linux существует в основном три типа файлов:

  • Обычные файлы
  • Специальные файлы
  • Справочники

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

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

  • Читаемые файлы
  • Двоичные файлы
  • Файлы изображений
  • Сжатые файлы и тд.

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

Специальные файлы включают в себя следующее:

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

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

Список блочных файлов в каталоге:

Пример вывода

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

Список символьных файлов в каталоге:

Пример вывода

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

Список символических ссылок в каталоге:

Пример вывода

Вы можете создавать символические ссылки, используя утилиту ln -s в Linux, как в примере ниже.

В приведенном выше примере я создал файл file1.txt в каталоге /tmp, затем создал символическую ссылку /home/sedicomm/file1.txt, указывающую на /tmp/file1.txt.

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

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

Перечисление каналов в каталоге:

Пример вывода

Вы можете использовать утилиту mkfifo для создания именованного канала в Linux следующим образом.

В приведенном выше примере я создал именованный канал с именем pipe1, затем передал ему некоторые данные с помощью команды echo, после чего оболочка стала не интерактивной при обработке ввода.

Затем я открыл другую оболочку и выполнил другую команду, чтобы отобразить то, что было передано в канал.

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

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

Примером работы сокетов может служить веб-браузер, устанавливающий соединение с веб-сервером.

Пример вывода

Это пример создания сокета в C с помощью системного вызова socket ().

В приведенном выше:

  • AF_INET — это семейство адресов (IPv4)
  • SOCK_STREAM — это тип (соединение ориентировано на протокол TCP)
  • 0 является протоколом (IP Protocol)

Чтобы обратиться к файлу сокета, используйте socket_desc, который совпадает с дескриптором файла, и используйте системные вызовы read () и write () для чтения и записи из сокета соответственно.

Директории

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

Пример вывода

Вы можете создать каталог с помощью команды mkdir.

Резюме

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

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ln -s file1.txt file2.txt

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

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

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

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

echo «test test test» > pipe1

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

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

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

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

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

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

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

Каталоги

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

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

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

Заключение

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Тип файловой системы для linux
  • Тип раздела для linux
  • Тестирование на проникновение с помощью kali linux
  • Тестирование жестких дисков linux
  • Тест поверхности жесткого диска linux