在 Linux 中,一个核心原则是“一切皆文件”。这一理念延伸到了硬件组件,它们在文件系统中表现为特殊文件。理解这些 Linux 设备 及其对应的文件对于系统管理至关重要。让我们从探索 /dev 目录开始,这是每个 设备文件 的传统位置。
在 /dev 中探索 Linux 设备
您可以列出 /dev 目录中的文件,以查看系统如何表示各种 Linux 设备。
$ ls -l /dev
brw-rw---- 1 root disk 8, 0 Dec 20 20:13 sda
crw-rw-rw- 1 root root 1, 3 Dec 20 20:13 null
srw-rw-rw- 1 root root 0 Dec 20 20:13 log
prw-r--r-- 1 root root 0 Dec 20 20:13 fdata
以下是输出列的从左到右的细分:
- 权限
- 所有者
- 组
- 主设备号
- 次设备号
- 时间戳
- 设备名称
识别 Linux 设备类型
ls -l 输出中权限字符串的第一个字符指示了文件类型。对于 设备文件,您会看到以下之一,这有助于识别特定的 Linux 设备类型:
c- 字符设备b- 块设备p- 管道s- 套接字
字符设备
这些设备一次传输一个字符的数据。许多伪设备(它们没有物理连接的硬件,但提供基本的操作系统功能)被表示为字符设备。一个经典的例子是 /dev/null。
块设备
这些设备以大块、固定大小的数据块进行传输。您通常会发现硬盘(/dev/sda)、固态硬盘和其他海量存储组件等存储硬件被表示为块设备,因为它们针对基于块的数据访问进行了优化。
管道设备
命名管道,或 FIFO(先进先出),允许进程间通信。它们的作用类似于字符设备,但将输出引导到另一个进程而不是物理设备。
套接字设备
套接字设备也促进了进程间的通信。与管道不同,它们更加通用,可以支持多个进程之间的通信,甚至跨网络进行通信。
理解设备号
每个 Linux 设备 都由两个数字唯一标识:主设备号 和 次设备号。您可以在 ls 输出中看到它们,用逗号分隔。对于数字为 8, 0 的设备:
主设备号 (8) 标识负责该设备的驱动程序。在这种情况下,8 通常用于 SCSI 磁盘驱动器。次设备号 (0) 告诉驱动程序它是设备的哪个特定实例。在这里,0 代表第一个驱动器(a)。