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

на главную - закладки

Жанры

UNIX — универсальная среда программирования
Шрифт:

Кроме того, в

/usr
есть каталог
/usr/adm
со справочной информацией и
/usr/dict
, содержащий небольшой словарь (см.
spell(1)
). Диалоговое справочное руководство хранится в
/usr/man
(см. в качестве примера
/usr/man/man1/spell.1
). Если в вашей системе имеются исходные тексты, вы, вероятно, найдете их в
/usr/src
.

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

/usr
, чтобы вам было понятно, как она устроена и где что можно найти.

2.7 Файлы устройств

В

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

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

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

$ cp /dev/mt0 junk

копирует содержимое магнитной ленты в файл

junk
. Команда
cp
не имеет понятия о специфике файла
/dev/mt0
; для нее он является обычным файлом, т.е. просто последовательностью байтов.

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

/dev
:

$ ls -l /dev

crw--w--w- 1 root 0, 0 Sep 27 23:09 console

crw-r--r-- 1 root 3, 1 Sep 27 14:37 fcmem

crw-r--r-- 1 root 3, 0 May 6 1981 mem

brw-rw-rw- 1 root 1, 64 Aug 24 17:41 mt0

crw-rw-rw- 1 root 3, 2 Sep 28 02:03 null

crw-rw-rw- 1 root 4, 64 Sep 9 15:42 rmt0

brw-r----- 1 root 2, 0 Sep 8 08:07 rp00

brw-r----- 1 root 2, 1 Sep 27 23:09 rp01

crw-r----- 1 root 13, 0 Apr 12 1983 rrp00

crw-r----- 1 root 13, 1 Jul 28 15:18 rrp01

crw-rw-rw- 1 root 2, 0 Jul 5 08:04 tty

crw--w--w- 1 root 1, 0 Sep 28 02:38 tty0

crw--w--w- 1 root 1, 1 Sep 27 23:09 tty1

crw--w--w- 1 root 1, 2 Sep 27 17:33 tty2

crw--w--w- 1 root 1, 3 Sep 27 18:48 tty3

$

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

'b'
или
'c'
. В таком виде команда
ls
выдает информацию из индексного дескриптора для файла устройств, но не для обычного файла. Обычному файлу предназначен хранимый в индексном дескрипторе список блоков памяти диска, в которых находится содержимое файла. В случае же файла устройств индексный дескриптор содержит внутреннее имя устройства, включающее его тип (символьное
с
или блочное
b
) и пару чисел, называемых верхним и нижним числами устройства. К блочным устройствам относятся диски и магнитные ленты, а все остальное: терминалы, принтеры, линии сетевой связи и т.п. — к символьным.
Верхнее число устройства обозначает его тип, а нижнее характеризует различные экземпляры устройств одного типа. Например,
/dev/tty0
и
/dev/tty1
— это два порта одного контроллера терминала, поэтому они имеют одно и то же верхнее число и различные нижние числа.

Файлы для дисков обычно именуются в соответствии с тем вариантом оборудования, которое представлено в системе. Файлы

/dev/rp00
и
/dev/rp01
названы так потому, что в системе используются дисковые накопители DEC RP06. Есть только один дисковый накопитель, логически поделенный на две файловые системы. Если бы существовал еще один накопитель, связанные с ним файлы имели бы имена
/dev/rp10
и
/dev/rp11
. Первая цифра обозначает номер накопителя, а вторая показывает, какая его часть используется.

У вас может возникнуть вопрос: почему существует несколько дисковых файлов устройств, а не одно? Исторически так сложилось (и для удобства поддержания), что файловая система была разделена на подсистемы. Файлы в подсистеме доступны через каталог главной системы. Программа

/etc/mount
показывает соответствие между файлами устройств и каталогами:

$ /etc/mount

rp01 on /usr

$

В нашем случае каталог root находится на

/dev/rp00
(хотя команда
/etc/mount
об этом не сообщает), а файловая система пользователей, т.е. файлы из каталога
/usr
и вложенных каталогов, находится на
/dev/rp01
.

Каталог

/root
должен быть доступен системе для выполнения команд. Каталоги
/bin
,
/dev
и
/etc
всегда находятся в корневом каталоге, поскольку при запуске системы доступны только файлы корневого каталога, а такие, как
/bin/sh
, необходимы для работы. Во время раскрутки системы все файловые системы проверяются на целостность (см.
icheck(8)
или
fsck(8)
) и подключаются к корню иерархии файлов. Эта операция подключения называется присоединением и является программистским эквивалентом операции установки пакета дисков на накопитель; обычно она выполняется только суперпользователем. После присоединения
/dev/rp01
в качестве
/usr
файлы пользователей становятся доступными, как если бы они были частью корневого каталога.

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

/bin
с какими-то файлами из каталогов
/bin
пользователей, поскольку
/usr
находится в иной подсистеме файлов, чем
/bin
:

$ ln /bin/mail /usr/you/bin/m

ln: Cross-device link

$

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

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

df
("disc free space" — свободное пространство диска) выдает сообщение о доступном пространстве в присоединенной подсистеме файлов:

Поделиться:
Популярные книги

Князь Целитель 4

Ткачев Андрей Юрьевич
4. Князь Целитель
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Князь Целитель 4

Кодекс Охотника. Книга XXXVIII

Винокуров Юрий
38. Кодекс Охотника
Фантастика:
фэнтези
боевая фантастика
попаданцы
юмористическое фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга XXXVIII

Печать пожирателя 2

Соломенный Илья
2. Пожиратель
Фантастика:
городское фэнтези
попаданцы
аниме
сказочная фантастика
5.00
рейтинг книги
Печать пожирателя 2

Изгой

Майерс Александр
2. Династия
Фантастика:
фэнтези
попаданцы
рпг
аниме
5.00
рейтинг книги
Изгой

Второгодка. Книга 3. Ученье свет

Ромов Дмитрий
3. Второгодка
Фантастика:
городское фэнтези
сказочная фантастика
альтернативная история
5.00
рейтинг книги
Второгодка. Книга 3. Ученье свет

Бандит 2

Щепетнов Евгений Владимирович
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Бандит 2

Матабар. II

Клеванский Кирилл Сергеевич
2. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар. II

Вампир. Английская готика. XIX век

Стивенсон Роберт Льюис
Фантастика:
ужасы и мистика
7.67
рейтинг книги
Вампир. Английская готика. XIX век

Паладин из прошлого тысячелетия

Еслер Андрей
1. Соприкосновение миров
Фантастика:
боевая фантастика
попаданцы
6.25
рейтинг книги
Паладин из прошлого тысячелетия

Принадлежать им

Зайцева Мария
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Принадлежать им

Запечатанный во тьме. Том 2

NikL
2. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 2

Менталист. Эмансипация

Еслер Андрей
1. Выиграть у времени
Фантастика:
альтернативная история
7.52
рейтинг книги
Менталист. Эмансипация

Государь

Кулаков Алексей Иванович
3. Рюрикова кровь
Фантастика:
мистика
альтернативная история
историческое фэнтези
6.25
рейтинг книги
Государь

Полет аистов

Гранже Жан-Кристоф
Детективы:
триллеры
8.88
рейтинг книги
Полет аистов