В Linux основным принципом является то, что «всё является файлом». Эта философия распространяется и на аппаратные компоненты, которые представлены в файловой системе специальными файлами. Понимание этих Linux-устройств и соответствующих им файлов имеет решающее значение для системного администрирования. Давайте начнем с изучения каталога /dev, традиционного места для каждого файла устройства.
Изучение Linux-устройств в /dev
Вы можете вывести список файлов в каталоге /dev, чтобы увидеть, как система представляет различные Linux-устройства.
$ ls -l /dev
brw-rw---- 1 root disk 8, 0 Dec 20 20:13 sda
crw-rw-rw- 1 root root 1, 3 Dec 20 20:13 null
srw-rw-rw- 1 root root 0 Dec 20 20:13 log
prw-r--r-- 1 root root 0 Dec 20 20:13 fdata
Вот разбивка столбцов слева направо:
- Права доступа
- Владелец
- Группа
- Основной номер устройства
- Дополнительный номер устройства
- Временная метка
- Имя устройства
Идентификация типов Linux-устройств
Первый символ в строке прав доступа вывода ls -l указывает на тип файла. Для файла устройства вы увидите один из следующих символов, который помогает идентифицировать конкретные типы Linux-устройств:
c- символьное (character)b- блочное (block)p- именованный канал (pipe)s- сокет (socket)
Символьные устройства
Эти устройства передают данные по одному символу за раз. Многие псевдоустройства, которые не подключены физически, но обеспечивают основные функции ОС, представлены как символьные устройства. Классическим примером является /dev/null.
Блочные устройства
Эти устройства передают данные большими блоками фиксированного размера. Вы часто обнаружите, что оборудование для хранения данных, такое как жесткие диски (/dev/sda), SSD и другие компоненты массового хранения, представлены как блочные устройства, поскольку они оптимизированы для блочного доступа к данным.
Устройства-каналы (Pipe)
Именованные каналы, или FIFO (First-In, First-Out), позволяют осуществлять межпроцессное взаимодействие. Они действуют как символьные устройства, но направляют свой вывод другому процессу, а не физическому устройству.
Устройства-сокеты (Socket)
Устройства-сокеты также облегчают связь между процессами. В отличие от каналов, они более универсальны и могут поддерживать связь между несколькими процессами, даже через сеть.
Понимание номеров устройств
Каждое Linux-устройство уникально идентифицируется двумя числами: основным номером устройства и дополнительным номером устройства. Вы можете увидеть их в выводе ls, разделенными запятой. Для устройства с номерами 8, 0:
Основной номер (8) идентифицирует драйвер, отвечающий за устройство. В данном случае 8 обычно используется для дисковых накопителей SCSI. Дополнительный номер (0) указывает драйверу, какой конкретный экземпляр устройства он обслуживает. Здесь 0 представляет первый диск (a).