1 что считается файлами в oc linux

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

Всё есть файл

Давайте сначала разберемся как вообще это может работать. В Linux есть такое понятие как корневая файловая система. В качестве неё монтируется раздел жесткого диска, на котором установлен Linux. В различные подпапки подключаются другие реальные разделы жесткого диска, например, домашний раздел подключается в папку /home, а загрузочный в папку /boot. Но существуют не только реальные файловые системы, но и виртуальные файловые системы, созданные ядром, например в папку /proc монтируется файловая система procfs, которая позволяет получить доступ к параметрам ядра, а в папку /dev монтируется devfs содержащая устройства, подключённые к компьютеру и тоже в виде файлов.

Конечно, в этих файловых системах размещены не совсем обычные файлы. В статье типы файлов Linux мы рассматривали все существующие типы файлов. Если вы посмотрите на обычный файл, например, /etc/passwd с помощью утилиты file, то увидите информацию об этом файле:

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

Давайте начнём с устройств. В каталог /dev монтируется файловая система devfs и тут находятся все подключённые к Linux устройства, а также некоторые интерфейсы для доступа к возможностям ядра:

Если попытаться посмотреть информацию, например, о файле /dev/sda1, то утилита сообщит нам что это блочный файл:

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

Работает это и в обратную сторону. Вы можете открыть любой обычный файл в редакторе разделов диска и создать в нём файловую систему вместо его содержимого:

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

Ещё в каталоге /dev существуют символьные файлы, например, /dev/random, /dev/null и /dev/zero. Открывая первый вы всегда будете получать случайную последовательность данных, во второй можно записывать любые данные и они никуда не будут сохранены, а третий всегда пустой, если копировать из него данные на какой-нибудь раздел, там всегда будут нули.

Информация об операционной системе, ядре и выполняемых в системе процессах находится в директории /proc. Все эти файлы можно посмотреть с помощью утилиты ls:

Например, информация об использовании оперативной памяти размещена в файле /proc/meminfo. Вы можете попытаться посмотреть информацию об этом файле:

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

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

Он тоже вроде как пустой. Но в нём содержаться данные:

И их можно изменить:

echo «0» | sudo tee /proc/sys/net/ipv4/ip_forward

Фактически, можно было просто сделать так:

echo «0» > /proc/sys/net/ipv4/ip_forward

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

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

Утилита file сообщит, что это сокет:

Но открыть сокет в текстовом редакторе или с помощью утилиты cat не получится, придется подключится к нему с помощью той же утилиты nc:

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

Выводы

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

Источник

Типы файлов в 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):

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

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

Обозначаются такие типы файлов 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 существуют в вашей системе. Вы можете найти более подробную информацию по каждому виду файлов в интернете, но если у вас остались вопросы, можете задать их в комментариях!

Источник

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

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

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

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

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

Ниже представлено краткое описание 7 различных типов файлов в Linux:

c — символьное устройство;

b — блочное устройство;

s — (локальный) сокет;

p — именованный канал;

l — символьная ссылка.

Обычный файл

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

$ touch ravesli.txt
diego@debian:

$ rm ravesli.txt
diego@debian:

Каталог

Обозначается как d

Каталог — это второй по распространенности тип файлов в Linux. Каталог можно создать с помощью команды mkdir (сокр. от «make directory»):

$ mkdir ravesli
diego@debian:

$ rmdir ravesli
diego@debian:

При попытке удалить каталог, содержащий внутри себя файлы, вы получите сообщение об ошибке:

$ mkdir ravesli
diego@debian:

$ touch /home/diego/ravesli/ravesli.txt
diego@debian:

$ rmdir ravesli
rmdir: не удалось удалить ‘ravesli’: Каталог не пуст

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

Обозначается как c

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

В этом примере символьным устройством является генератор псевдослучайных чисел.

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

Обозначается как b

Блочные устройства похожи на символьные. Чаще всего они управляют аппаратными устройствами, такими как: жесткие диски, память и т.д. Большинство из них располагаются в каталоге /dev :

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

Обозначаются как s

Как правило, локальные сокеты используются для связи между такими службами, как: X Window, syslog и т.д.

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

Обозначаются как p

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

Обозначаются как l

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

Существует два типа символьных ссылок в Linux:

Мягкая ссылка является указателем на некоторый файл или каталог (сродни ярлыкам в Windows). Если вы переместите файл, связь с символьной ссылкой разорвётся (но сама ссылка все еще будет существовать, указывая на файл, которого нет). Если вы замените файл другим, сохранив имя, символьная ссылка будет указывать на новый файл. Символьные ссылки могут охватывать различные разделы файловой системы.

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

$ echo file1 > file1
diego@debian:

$ cat file2
file1
diego@debian:

Заключение

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

Поделиться в социальных сетях:

Типы пользователей и Права доступа в Linux

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

Источник

Файловая система Linux

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

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

Вторая причина хранить данные на диске, это то, что оперативная память намного дороже чем более медленные, но вместительные жесткие диски. Фактически 16 Гб оперативной памяти будет стоить столько же, сколько жесткий диск на 2 Тб. Таким образом, мы видим, что оперативная память в 71 раза дороже чем HDD.

Что такое файловая система?

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

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

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

Основные функции файловой системы

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

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

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

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

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

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

Структура каталогов

Намного проще найти файлы, если они хранятся небольшими группами, каждый на своем месте, а не все в одной куче. Структуру файловой системы Linux можно представить в виде простой иерархии. Все каталоги находятся в корневом каталоге (/) поэтому каждый адрес файла начинается с него. Например, /var/log/dmesg, /usr/share/, /bin.

Каталоги /bin, /dev, /etc, /lib, /root, /sbin не могут быть примонтированы и должны быть доступны еще до загрузки, так как в них находятся все необходимые файлы. Что касается каталогов /media и /mnt, то они должны быть пустыми, поскольку это точки монтирования для других файловых систем. Остальные каталоги можно смело монтировать позже, они никак не повлияют на запуск.

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

В Linux все физические диски и разделы, объеденные в одну файловую структуру. Она начинается с корня (/) в котором расположены все другие каталоги. Это работает потому что файловые системы /var, /home, /boot, /tmp и т д могут находиться на других физических дисках. Даже съемные диски подключаются в основную файловую систему.

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

Типы файловых систем

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

Linux может монтировать и читать такие файловые системы:

Мы более подробно рассматривали особенности некоторых из них в статье типы файловых систем Linux.

Монтирование файловых систем

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

Корневая файловая система ос Linux / подключается на раннем этапе загрузки. Другие файловые системы монтируются системой инициализации, например, SysVinit или Systemd. Точки монтирования настраиваются с помощью файла /etc/fstab. Также можно выполнять ручное монтирование в Linux с помощью команды mount. Каталог для монтирования необязательно должен быть пустым, он может содержать файлы, но тогда они будут просто скрыты.

Выводы

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

Источник

Файловая система Linux — обзор, список команд для работы

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

1. Что такое файловая система простыми словами

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

В физическом смысле файловая система Linux/UNIX представляет собой пространство раздела диска разбитое на блоки фиксированного размера. Их размер кратен размеру сектора: 1024, 2048, 4096 или 8120 байт. Размер блока известен заранее.

Как происходит обмен данными между ядром, приложениями и жестким диском? Для этого существуют 2 технологии:

Список поддерживаемых ядром файловых систем находится в файле /proc/filesystems :

Иерархия файловой системы

Как мы уже сказали выше, есть вторая сторона ФС, которая состоит в определении ее с точки зрения организации расположения файлов в Linux. В этом случае можно сказать, что: файловая система — это иерархическая структура, которая начинается с корневого каталога «/» (корневой каталог) и дальше ветвится в соответствие с работой системы.

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

2. Целостность файловой системы — что это такое

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

Проверку целостности файловой системы в Linux можно запустить с помощью команды fsck (в Windows это программа называется – scandisk )

В начале ФС есть чистый бит. Если система используется, то в этот бит заносится 1. По завершению работы опять 0.

3. Список команд для работы с файлами в Linux

Права доступа к файлу/каталогу можно изменять с помощью команды chmod:

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

4. Типы файловых систем Linux — описание и обзор

Файловые системы условно делятся на два типа

Узнать файловую систему в ОС Linux

Самые популярными типами ФС в Linux являются:

В Windows поддерживаются свои ФС: NTFS, FAT32. Линукс также их поддерживает, а вот Windows не поддерживает линуксовые системы.

1 Extfs (Extended File System). Дата появления на свет апреле 1992 года. Самая первая файловая система разработанная специально для ОС на ядре Linux. Наибольший возможный размер раздела файла — 2 Гб. Максимальная длина имени файла — 255 символов. Является прародителем популярных ФС Ext2, Ext3.

2 Ext2 (second extended file system). Дата создания 1993 год. Является не журналируемой файловой системой. Была популярна до 2000-х. Имеет ряд ограничений на работу с большими файлами, зато является и самой быстрой, поэтому её часто используют в различных сравнительных тестах как эталонную.

3 Ext3 (third extended filesystem). Дата выхода 2001 год. Считается революционной, поскольку относится к поколению журналируемых систем. В настоящее время файловая система Ext3 поддерживает файлы размером до 1 ТБайт. Используется в некоторых случаях до сих пор. Разделы Ext3 могут читать Windows-программы (например, Total Commander). Разработчик Стивен Твид.

4 Ext4 (дата выхода 2006 год). Является стандартом во всех современных Linux (а сейчас 2019 год). Хорошо защищена от проблем фрагментации и оптимизирована для работы с большими файлами. Максимальный размер файловой системы не может превышать 16 ТБайт.

5 ReiserFS (или Reiser3). Создана уже после ext3 в качестве ее альтернативы. Журналируемая система. Поддерживает большую производительность. Позволяет изменять размеры разделов во время работы.

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

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

7 XFS (журналируемая файловая система). Это производительная файловая система, разработанная в Silicon Graphics для свой операционной системы еще в 2001 году. Позволяла использовать диски 2 ТБайт. Существует возможность потери данных во время записи при сбое питания, так как большое количество буферов хранится в памяти.

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

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

Перечислим поддерживаемые типы файлов в ОС Linux

Тип файла в каталоге можно посмотреть командой:

Посмотреть список блочных устройств можно командой:

# ls-l /dev/sd* brw-rw—-1 root disk 8, 0 Мар11 19:03 /dev/sda brw-rw—-1 root disk 8, 1 Мар10 21:23 /dev/sda1 brw-rw—-1 root disk 8, 5 Мар10 21:23 /dev/sda5 brw-rw—-1 root disk 8, 16 Мар10 22:31 /dev/sdb brw-rw—-1 root disk 8, 17 Мар10 21:23 /dev/sdb1 brw-rw—-1 root disk 8, 18 Мар10 21:23 /dev/sdb2 brw-rw—-1 root disk 8, 32 Мар11 19:05 /dev/sdc brw-rw—-1 root disk 8, 33 Мар11 17:59 /dev/sdc1

Буквой «b» помечаются блочные устройства.

Посмотреть список дисков можно командой

Вывести информацию о жестком диске можно так

Источник

Операционные системы и программное обеспечение