(temporaries — временное) представляет собой хранилище для временных файлов, создаваемых при выполнении программы.Например, когда вы вызываете редактор, он создает файл с именем типа
/tmp/e00512
, что позволяет иметь свою копию редактируемого файла, а не работать с оригиналом. Редактор мог бы, конечно, создать копию в вашем текущем каталоге, но есть причина для преимущественного использования /tmp
: хотя это и маловероятно, в вашем каталоге уже мог присутствовать файл e00512
. Далее каталог /tmp
автоматически очищается при запуске системы, так что в случае системной аварии в вашем каталоге не появится ненужный файл. Часто каталог /tmp
организуется на диске для обеспечения быстрого доступа к нему. Однако здесь возникает проблема: если сразу несколько программ создают файлы в каталоге /tmp
, их файлы могут перепутаться. Именно поэтому редактор ed
выбирает особое имя; оно построено таким образом, чтобы никакая другая программа не могла выбрать то же имя для временного файла. В гл. 5 и 6 будет показан способ достижения этого.Каталог
/usr
называется файловой системой пользователей, хотя он может быть мало связан с файлами настоящих пользователей системы. На своей машине мы используем исходные каталоги /usr/bwk
и /usr/rob
, но у вас часть иерархии, начинающаяся с /usr
, может быть другой. Независимо от того, находятся ли ваши файлы в каталоге, вложенном в /usr
, вы всегда найдете в нем что-нибудь интересное (если нет местной специфики). Так же, как и в каталоге /
, здесь есть каталоги с именами /usr/bin
, /usr/lib
и /usr/tmp
. Эти каталоги имеют назначение, сходное со своими тезками в каталоге /
, но содержат программы, менее критичные для системы. Например, программа nroff
обычно находится в /usr/bin
, а не в /bin
, библиотеки компилятора с Фортрана располагаются в /usr/lib
. Правда, "критичными" для разных систем считаются разные программы. Некоторые системы, такие, как широко распространенная седьмая версия, все программы хранят в /bin
, не имея дела с /usr/bin
. В других системах каталог /usr/bin
разбивается на два каталога в зависимости от частоты использования.Кроме того, в
/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
всегда находятся в корневом каталоге, поскольку при запуске системы доступны только файлы корневого каталога, а такие, как