/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三个器件的主号码,并且016,和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/controlc: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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top