在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下) |
理解设备文件分类有助于进行系统调试、驱动开发或手动管理硬件资源。