Чтение онлайн

ЖАНРЫ

Linux для пользователя

Костромин Виктор Алексеевич

Шрифт:
/var/backups Этот каталог используется, чтобы сохранить резервную копию важных системных файлов /var/catman/cat[1-9] Этот каталог используется, чтобы хранить уже сформированные страницы руководств в соответствии с номером главы /var/lock Здесь содержатся управляющие файлы системы, которые используются для резервирования использования тех или иных ресурсов системы /var/log Различные файлы протоколов (логи) /var/run Переменные файлы времени выполнения
различных программ. Они содержат идентификаторы процессов (PIDs) и записывают текущую информацию (utmp). Файлы в этом каталоге обычно очищаются во время загрузки системы /var/spool Файлы различных программ, поставленные в очередь на обслуживание /var/spool/at Файлы заданий, запущенных посредством команды at /var/spool/cron Файлы системы cron /var/spool/lpd Файлы, ожидающие вывода на печать /var/spool/mail Пользовательские почтовые ящики /var/spool/news Файлы системы news /var/spool/uucp Файлы системы uucp /var/tmp Временные файлы 

4.4. Типы файлов

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

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

• файлы физических устройств;

• именованные каналы (named pipes);

• гнезда (sockets);

• символические ссылки (symlinks).

4.4.1. Файлы физических устройств

Как уже говорилось, с точки зрения ОС Linux, все подключаемые к компьютеру устройства (жесткие и съемные диски, терминал, принтер, модем и т. д.), представляются файлами. Если, например, надо вывести на экран какую-то информацию, то система как бы производит запись в файл /dev/tty01.

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

Взаимодействием с физическими устройствами в Linux управляют драйверы устройств, которые либо встроены в ядро, либо подключаются к нему как отдельные модули. Для взаимодействия с остальными частями операционной системы каждый драйвер образует коммуникационный интерфейс, который выглядит как файл. Большинство таких файлов для различных устройств как бы "заготовлены заранее" и располагаются в каталоге /dev.

Если вы заглянете в каталог /dev, то увидите там огромное количество файлов физических устройств. ("Заглянуть в каталог" означает выполнить последовательно две команды cd и ls.) В табл. 4.2 приведена небольшая справка по именам наиболее часто используемых специальных

файлов.

Таблица 4.2. Основные специальные файлы.

Имя Значение
/dev/console Системная консоль, т. е. монитор и клавиатура, физически подключенные к компьютеру
/dev/hd Жесткие диски с IDE-интерфейсом. Устройство /dev/hda1 соответствует первому разделу на первом жестком диске (/dev/hda), т. е. на диске, подключенном как Primary Master
/dev/sd Жесткие диски с SCSI-интерфейсом
/dev/fd Файлы дисководов для гибких дисков. Первому дисководу соответствует /dev/fd0, второму /dev/fd1
/dev/tty Файлы поддержки пользовательских консолей. Название сохранилось с тех пор, когда к системе UNIX подключались телетайпы в качестве терминалов. В Linux эти файлы устройств обеспечивают работу виртуальных консолей (переключаться между которыми можно с помощью ‹Alt›+‹F1› - ‹Alt›+‹F6›)
/dev/pty Файлы поддержки псевдо-терминалов. Применяются для удаленных рабочих сессий с использованием telnet
/dev/ttS Файлы, обеспечивающие работу с последовательными портами. /dev/ttS0 соответствует COM1 в MS-DOS, /dev/ttS1 - COM2. Если ваша мышь подключается через последовательный порт, то /dev/mouse является символической ссылкой на соответствующий /dev/ttSN
/dev/cua Специальные устройства для работы с модемами
/dev/null Это устройство - просто черная дыра. Все, что записывается в /dev/null, навсегда потеряно. На это устройство можно перенаправить вывод ненужных сообщений. Если /dev/null используется как устройство ввода, то оно ведет себя как файл нулевой длины

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

Для файлов устройств команда ls -l вместо размера файла выдает старший и младший номера данного устройства.

4.4.2. Именованные каналы (pipes)

Еще один тип специальных файлов - именованные каналы, или буферы FIFO (First In - First Out). Файлы этого типа служат в основном для того, чтобы организовать обмен данными между разными приложениями (pipe переводится с английского как труба).

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

4.4.3. Доменные гнезда (sockets)

Гнезда - это соединения между процессами, которые позволяют им взаимодействовать, не подвергаясь влиянию других процессов. Вообще гнезда (и взаимодействие программ при помощи гнезд) играют очень важную роль во всех Unix-системах, включая и Linux: они являются ключевым понятием TCP/IP и соответственно на них целиком строится Интернет. Однако с точки зрения файловой системы гнезда практически неотличимы от именованных каналов: это просто метки, позволяющие связать несколько программ. После того как связь установлена, общение программ происходит без участия файла гнезда: данные передаются ядром ОС непосредственно от одной программы к другой.

Поделиться с друзьями: