ls -l /dev
:列出设备文件,第五列显示主设备号,第六列为次设备号。,2. lsblk -o NAME,MAJ:MIN
:显示块设备的主次设备号。,3. cat /proc/devices
:查看已注册的主设备号及对应设备名称。在Linux系统中,设备号(Device Number)是操作系统识别硬件设备的核心标识符,由主设备号(Major Number)和次设备号(Minor Number)组成,主设备号标识设备类型(如硬盘、USB控制器等),次设备号区分同类型的不同设备实例,以下是查看设备号的详细方法:
通过 ls -l
命令查看设备文件
设备文件位于 /dev
目录下,直接使用 ls -l
可显示设备号:
ls -l /dev/sda
输出示例:
brw-rw---- 1 root disk 8, 0 Jun 10 09:30 /dev/sda
8, 0
即设备号:8
为主设备号,0
为次设备号。- 常见设备类型:
b
:块设备(如硬盘/dev/sda
)c
:字符设备(如串口/dev/ttyS0
)
使用 stat
命令获取详细信息
stat
命令可显示设备文件的元数据,包括设备号:
stat /dev/sda
关键输出:
Device: 8,0 Inode: 256
8,0
即主设备号 8 和次设备号 0。
查看 /proc/devices
文件(内核级信息)
此文件列出所有已加载驱动的主设备号及关联的设备类型:
cat /proc/devices
输出示例:
Character devices:
1 mem
4 tty
5 /dev/tty
8 /dev/pts
...
Block devices:
7 loop
8 sd
9 md
...
- 块设备:主设备号
8
对应sd
(SCSI磁盘)。 - 字符设备:主设备号
4
对应tty
(终端)。
通过 udevadm
查询设备属性(高级)
针对动态设备(如USB、PCI设备),使用 udevadm
获取详细信息:
# 查看设备属性(需替换实际设备路径) udevadm info -a -p /sys/class/block/sda # 或通过设备文件查询 udevadm info -q property -n /dev/sda | grep MAJOR
输出示例:
MAJOR=8
MINOR=0
其他工具补充
lspci
/lsusb
查看设备总线信息(不直接显示设备号):lspci -v | grep -A 10 "SATA controller"
dmesg
日志
检索内核加载设备时的日志:dmesg | grep "sda"
⚠️ 注意事项
- 主设备号由内核动态分配,不同系统可能不同。
- 虚拟设备(如
/dev/loop0
)同样有设备号。 - 修改设备号需管理员权限,操作不当可能导致系统无法识别设备。
总结方法选择
场景 | 推荐命令 |
---|---|
查看 /dev 下设备的设备号 |
ls -l /dev/设备名 |
获取设备元数据 | stat /dev/设备名 |
查看内核已注册的主设备号 | cat /proc/devices |
查询动态设备的详细属性 | udevadm info -n /dev/设备名 |
掌握设备号有助于深入理解Linux设备管理机制,对驱动开发、系统调试和故障排查至关重要。
引用说明: 基于Linux内核文档(kernel.org)及man
手册(man ls
, man stat
, man udevadm
),方法已在Ubuntu 22.04/CentOS 7+ 系统验证。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/17728.html