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

Все подключенные к компьютеру устройства понимаются операцион­ной системой как файлы: вывод информации на терминал, печать на принтере, отправка почты — все это, с точки зрения ОС, есть запись в файл. Технически файл устройства — это коммуникационный интерфейс драйвера, ведающего взаимодействием с этим устройством. Большинство таких файлов располагается в каталоге /dev.

Загляните в этот каталог, введя команду Is -1 /dev. Вывод этой команды займет несколько экранов, что создает повод для знакомства с коман­дой-фильтром more, выводящей поступающие к ней на вход данные по одному экрану за раз:

$ Is -I /dev I more

Чтобы увидеть следующий экран, нажмите пробел; чтобы прервать ра­боту команды — Ctrl+С. О символе вертикальной черты, разделяющей команды Is и more, подробнее сказано в п. 3.3.1.

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

других часто используемых устройств. Символ N означает номер устрой­ства в группе однотипных с ним устройств. Наиболее часто используемые стандартные имена устройств

Таблица 2.2

Файл Устройство
null Пустое устройство. Все данные, выводимые в него, просто исчезают. Удобно использовать его для вывода ненужных сообщений
console Системная консоль, т.е. физически подключенные клавиатура и монитор
ttyN Пользовательская (виртуальная) консоль. Linux поддерживает до 6 таких консолей, для переключения между которыми служит комбинация клавиш Alt+Fn, где п — число от 1 до 6
pts/N Виртуальный терминал. Программа графического режима, в окне которой можно работать как в консоли
mouseN Мышь
audioN Звуковая карта
ttySN Последовательный порт. Файл /dev/ttySO соответствует порту СОМ1 в MS-DOS, /dev/ttySI — порту COM2
lpN Параллельный порт
cuaN Специальное устройство для работы с модемом
ethN Сетевая плата
fcIN Дисковод для гибких дисков. Первому, то есть А:, соответствует /dev/fdO, для В: используется имя /dev/fdl
hdxN Жесткий диск с интерфейсом IDE, где х — буква, обозначающая номер такого диска (начиная с а), N— номер раздела на диске
sdxN Жесткий диск с интерфейсом SCSI

Вместо размера файла команда Is выдает два числа. Это так называемые старший и младший номера устройства. Старший номер несет информацию о драйвере, к которому относится данный файл, а младший номер указы­вает, к какому именно из однотипных устройств следует обращаться.

Жесткие и символические ссылки

Жесткая ссылка является просто другим именем для исходного файла. После создания такой ссылки ее невозможно отличить от исходного имени файла. «Настоящего» имени у файла нет, точнее, все такие име­на будут настоящими. Команда Is показывает количество именно таких жестких ссылок. Удаление файла по любому из его имен уменьшает на единицу количество ссылок, и окончательно файл будет удален только тогда, когда это количество станет равным нулю. Поэтому удобно ис­пользовать жесткие ссылки для того, чтобы предотвратить случайное удаление важного файла.

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

$ln /home/den/README /home/den/readme_too $ls -I /home/den/README -rwxr-xr-- 2 den users 0 Feb 14 19:08 /home/den/README

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

Другой тип ссылок представляют собой символические ссылки. По на­значению они аналогичны ярлыкам в ОС Windows: указывают на файл, расположенный где угодно (например, на съемном носителе), и после удаления такого файла или размонтирования съемного носителя стано­вятся бесполезны.

Символическая ссылка создается той же командой In с ключом -s:

$ln -s /home/den/README /home/den/do, not. readme $ls -I /home/den/do.not. readme

lrwxrwxrwx I den users 16 Feb 14 19:17 /home/den/do.not. readme -> /home/den/README

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

$ cat /home/den/do, not. readme $

Значение самой ссылки, то есть имя файла, на который она ссылается, можно узнать с помощью команды readlink.

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

Можно даже закольцевать такую цепочку:

$ touch а1

$ In-s а1 а2; rm а1 $ In-s а2 а1

$ls-1 а? # это шаблон имени. Ему соответствуют все имена из двух букв, первая «а»

al -> a2 a2 -> al $ cat al cat: al: Too many levels of symbolic links

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

Символическая ссылка на каталог может участвовать в образовании пол­ного имени файла, но есть одна тонкость: по ссылке нельзя проследовать обратно в направлении корня дерева каталогов. Вместо псевдоподкатало­га «..» подставляется родительский каталог каталога-оригинала. Так, если в домашнем каталоге пользователя ivan есть ссылка на домашний каталог пользователя den, то путь /home/ivan/link_to_den_home/.. эквивалентен не /home/ivan, a /home/den/.., то есть /home.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: