Зная специальный файл устройства старшие и младшие номера в Linux
Вопрос
Все файлы в / dev
являются специальными файлами ... они представляют устройства компьютера.
Они были созданы с помощью системного вызова mknod
. Мой вопрос: как я могу узнать несовершеннолетнего и
основные цифры, которые были использованы для создания этого специального файла?
Решение
Список называется Список устройств LANANA Linux , и его администрирует Алан Кокс.
Вы можете найти последнюю копию в Интернете ( прямая ссылка ) или в источнике Linux. Его имя в дереве ядра - Documentation / devices.txt код>
.
Чтобы увидеть старшие и младшие числа, которые создали узел в / dev
(или любом другом узле устройства в этом отношении), просто используйте ls
с - l
опция:
22:26 jsmith@undertow% ls -l /dev/xvd?
brw-rw---- 1 root disk 202, 0 Nov 1 20:31 /dev/xvda
brw-rw---- 1 root disk 202, 16 Nov 1 20:31 /dev/xvdb
brw-rw---- 1 root disk 202, 32 Nov 1 20:31 /dev/xvdc
В этом примере 202
- это основной номер трех устройств, а 0
, 16
и 32
являются несовершеннолетними. b
слева указывает, что узел является блочным устройством. Альтернатива - c
, символьное устройство:
crw-rw-rw- 1 root tty 5, 0 Nov 22 00:29 /dev/tty
Другие советы
$ ls -l /dev/fd0 /dev/null brw-rw---- 1 root floppy 2, 0 Nov 22 19:48 /dev/fd0 crw-rw-rw- 1 root root 1, 3 Nov 22 19:48 /dev/null $ stat -c '%n: %F, major %t minor %T' /dev/fd0 /dev/null /dev/fd0: block special file, major 2 minor 0 /dev/null: character special file, major 1 minor 3
Большинство номеров устройств являются фиксированными (т.е. / dev / null
всегда будет символьным устройством 1: 3
), но в Linux некоторые выделяются динамически.
$ cat /proc/devices Character devices: ... 10 misc ... Block devices: ... 253 mdp 254 device-mapper $ cat /proc/misc ... 57 device-mapper ...
Например, в этой системе просто так получилось, что / dev / mapper / control
будет c: 10: 57
, а остальная часть / dev / mapper / *
будет иметь значение b: 254: *
, и это может отличаться от одного цикла загрузки к другому - или даже при загрузке / выгрузке модулей и добавлении / удалении устройств . р>
Вы можете подробнее изучить эти регистрации устройств в / sys
.
$ readlink /sys/dev/block/2:0 ../../devices/platform/floppy.0/block/fd0 $ cat /sys/devices/platform/floppy.0/block/fd0/dev 2:0 $ readlink /sys/dev/char/1:3 ../../devices/virtual/mem/null $ cat /sys/devices/virtual/mem/null/dev 1:3
Вы также можете использовать stat.
$ stat -c 'major: %t minor: %T' <file>
Специально для блочных устройств:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 90G 0 disk
├─sda1 8:1 0 4G 0 part [SWAP]
├─sda2 8:2 0 4G 0 part /
Альтернатива, которая не зависит от stat
:
$ cat /sys/class/*/random/dev
1:8