咱们今天一起了解下 Linux 系统中 /dev 目录的结构及功能~在 Linux 操作系统中,/dev 目录是一个特殊的文件系统(设备文件系统),其中包含了所有可用设备的接口。每个设备在 Linux 中都被视为一个文件,从而可以通过标准的文件操作(如打开、读取、写入和关闭)来与硬件设备进行交互。/dev 是 Linux 实现 “一切皆文件” 的核心目录,这种设计符合 Linux。- 这些设备文件以字符为单位进行数据传输,如键盘、串口和鼠标。
/dev/tty[1-6]:虚拟控制台(Ctrl+Alt+F1~F6 切换)/dev/tty:当前控制终端/dev/console:系统控制台/dev/ttyS0:串口 1/dev/input/event0:键盘 / 鼠标输入事件/dev/fb0:帧缓冲(图形显示)
- 这些设备文件以块为单位进行数据传输,常用于存储设备,如硬盘、USB 驱动器和光盘。
- 块设备允许随机访问,因此可以在任意位置读取或写入数据。
/dev/sd[a-z]:SATA/SCSI/USB 硬盘(sda= 第一块、sdb= 第二块)/dev/sda1:sda 的第 1 分区/dev/nvme0n1:NVMe SSD/dev/cdrom:光驱(软链接)
示例:brw-rw---- 1 root disk 8, 0 /dev/sda(8= 主设备号、0= 次设备号)在现代 Linux 系统中,设备文件的创建和管理通常由 udev(用户空间设备管理器)负责。udev 根据内核事件动态地创建和删除设备文件。静态创建:早期的 Linux 系统中,设备文件是静态创建的,可以使用 mknod 命令。mknod /dev/mydevice c 100 0
其中,c表示字符设备,100是主设备号,0是次设备号。- /dev/null:一个特殊设备,所有写入它的数据都会被丢弃。常用于抑制输出。
- /dev/zero:读取会返回无限的零字节,可以用于初始化内存或文件。
- /dev/random 和 /dev/urandom:提供随机数生成服务,前者是阻塞的,而后者是非阻塞的。
- /dev/sda:表示第一个 SATA 或 SCSI 硬盘,/dev/sdb 表示第二个,以此类推。
- /dev/tty:表示当前终端的设备文件,通常用于控制台输入输出。
- /dev/pts/:伪终端设备,主要用于支持 SSH 和终端仿真。
设备文件的权限设置和普通文件一样,使用 ls -l /dev 命令可以查看设备文件的权限。例如:crw-rw---- 1 root disk 10, 234 Mar 1 12:00 /dev/sda
- rw-rw----:权限说明,表示属主和所属组有读写权限,其他用户没有权限
在 Linux 中,你可以通过设备文件执行各种操作。以下是一些常见的示例:- 将输出重定向到 /dev/null,通常用于丢弃不需要的输出:
echo "test" > /dev/null 2>&1
- 写入数据到 /dev/zero 以生成一个指定大小的文件:
dd if=/dev/zero of=myfile bs=1M count=10
/dev 目录是 Linux 系统中至关重要的组成部分,提供了与硬件交互的接口。理解 /dev 目录的结构和功能对于系统管理、故障排除以及开发工作都是非常重要的。通过掌握设备文件的使用,用户可以更有效地管理和利用系统资源。