在Linux系统中,设备文件是操作系统与硬件设备或虚拟设备交互的接口,主要分为以下几类:
b
(如 brw-rw----
)。/dev
目录下,例如 /dev/sda
(第一块硬盘)、/dev/nvme0n1
(NVMe SSD)。ls -l /dev/sda
可查看类型和主/次设备号。/dev/tty
)、打印机等。c
(如 crw-rw----
)。/dev/tty1
(终端)、/dev/null
(空设备)、/dev/random
(随机数生成器)。ls -l /dev/tty1
可查看类型和主/次设备号。/dev/null
:丢弃所有写入的数据。/dev/zero
:提供无限的空字符(\0
)。/dev/random
或 /dev/urandom
:生成随机数。eth0
、wlan0
等接口名)。ioctl
)。每个设备文件关联两个数字(通过 ls -l
或 stat
查看):
- 主设备号(Major):标识设备类型(如 8
表示SCSI磁盘)。
- 次设备号(Minor):标识同一类型下的具体实例(如 /dev/sda1
的分区号)。
mknod
命令手动创建(需root权限),例如:
bash
sudo mknod /dev/mydevice c 200 0 # 创建主设备号为200的字符设备
udev
动态管理设备文件(如热插拔设备自动生成节点)。ls -l /dev/sda /dev/tty1 /dev/null
输出类似:
brw-rw---- 1 root disk 8, 0 May 10 10:00 /dev/sda # 块设备
crw-rw---- 1 root tty 4, 1 May 10 10:00 /dev/tty1 # 字符设备
crw-rw-rw- 1 root root 1, 3 May 10 10:00 /dev/null # 字符设备(伪设备)
类型 | 标识符 | 读写方式 | 示例 |
---|---|---|---|
块设备 | b |
按数据块随机 | /dev/sda |
字符设备 | c |
按字节流顺序 | /dev/tty1 |
伪设备 | c |
内核模拟 | /dev/random |
网络设备 | 无文件 | 通过套接字 | eth0 (非/dev下) |
理解设备文件分类有助于进行系统调试、驱动开发或手动管理硬件资源。