在linux中了解设备专用文件的主要和次要编号

Man*_*áoz 20 linux file device

所有文件/dev都是特殊文件......它们代表计算机的设备.它们是使用mknod系统调用创建的.我的问题是:我如何知道用于创建此特殊文件的次要和主要数字?

Jed*_*ith 27

该列表称为LANANA Linux设备列表,由Alan Cox管理.

您可以在线(直接链接)或在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
Run Code Online (Sandbox Code Playgroud)

在这个例子中,202是三个设备的主要编号,而且016,并且32是未成年人.的b左边表示该节点是一个块设备.替代方案是c,一个角色设备:

crw-rw-rw- 1 root tty       5,   0 Nov 22 00:29 /dev/tty
Run Code Online (Sandbox Code Playgroud)


eph*_*ent 9

$ 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


小智 5

你也可以使用统计。

$ stat -c 'major: %t minor: %T' <file>
Run Code Online (Sandbox Code Playgroud)