/dev
中的所有文件都是特殊文件......它们代表计算机的设备。
它们是使用mknod
系统调用创建的。我的问题是:我怎么知道未成年人和
用于创建此特殊文件的主要数字?
答案 0 :(得分:27)
该列表称为 LANANA Linux设备列表,由Alan Cox管理。
您可以在线找到latest copy(direct link),也可以在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
答案 1 :(得分: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/control
c:10:57
为/dev/mapper/*
而b:254:*
的其余部分为/sys
,这可能与引导周期到另一个 - 或者甚至在加载/卸载模块并添加/移除设备时。
您可以在{{1}}进一步探索这些设备注册。
$ 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
答案 2 :(得分:4)
您也可以使用stat。
$ stat -c 'major: %t minor: %T' <file>
答案 3 :(得分: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 /
答案 4 :(得分:1)
不依赖于stat
的替代方案:
$ cat /sys/class/*/random/dev
1:8