里面的所有文件/dev
都是特殊文件……它们代表计算机的设备。它们是使用mknod
系统调用创建的。我的问题是:我如何知道用于创建此特殊文件的次要编号和主要编号?
问问题
33486 次
5 回答
28
该列表称为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
在本例中,202
是三个设备的主设备号,0
、16
、 和32
是次设备。左边的b
表示节点是块设备。另一种选择是c
,一个字符设备:
crw-rw-rw- 1 root tty 5, 0 Nov 22 00:29 /dev/tty
于 2009-12-01T03:18:35.130 回答
9
$ ls -l /dev/fd0 /dev/null brw-rw---- 1 根软盘 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, 主要 %t 次要 %T' /dev/fd0 /dev/null /dev/fd0:块特殊文件,主要 2 次要 0 /dev/null:字符特殊文件,主要 1 次要 3
大多数设备号是固定的(即/dev/null
始终是字符设备1:3
),但在 Linux 上,有些是动态分配的。
$猫 /proc/设备 字符设备: ... 10 杂项 ... 块设备: ... 253 mdp 254 设备映射器 $猫 /proc/misc ... 57 设备映射器 ...
例如,在这个系统上,它只是碰巧/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
于 2009-12-01T03:52:47.683 回答
5
您也可以使用统计信息。
$ stat -c 'major: %t minor: %T' <file>
于 2013-06-18T23:25:56.607 回答
2
特别是对于块设备:
$ 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 /
于 2015-10-28T16:43:03.630 回答
1
不依赖于的替代方案stat
:
$ cat /sys/class/*/random/dev
1:8
于 2017-04-26T16:34:52.510 回答