1.2.10. 设备文件

设备文件包括系统的物理设备和虚拟设备,如硬盘、显卡、显示屏、键盘。虚拟设备的一个例子是控制台,用“/dev/console”来描述。

设备文件有两种类型。

  • 字符设备

    • 每次访问一个字符

    • 一个字符等于一个字节

    • 如键盘、串口…

  • 块设备

    • 通过更大的单元–块,进行访问

    • 一个块>一个字节

    • 如硬盘等…

你可以读写块设备文件,尽管该文件可能包含二进制数据,读取后显示出无法理解的乱码。向文件写入数据,有时可以帮助定位硬件连接故障。比如,你可以将文本文件导入打印机设备“/dev/lp0”,或者将调制解调命令发送到合适的串口“/dev/ttyS0”。但是,除非这些操作都小心完成,否则可能会导致一场大灾难。所以要特别小心。

[注意]注意

常规访问打印机,使用lp(1)。

设备的节点数可以通过执行ls(1)得到,如下所示。

  1. $ ls -l /dev/sda /dev/sr0 /dev/ttyS0 /dev/zero
  2. brw-rw---T 1 root disk 8, 0 Oct 16 20:57 /dev/sda
  3. brw-rw---T+ 1 root cdrom 11, 0 Oct 16 21:53 /dev/sr0
  4. crw-rw---T 1 root dialout 4, 64 Oct 16 20:57 /dev/ttyS0
  5. crw-rw-rw- 1 root root 1, 5 Oct 16 20:57 /dev/zero
  • /dev/sda“的主设备号是8,次设备号是0。它可以被disk群组的用户读写。

  • /dev/sr0“的主设备号是11,次设备号是0。它可以被cdrom群组的用户读写。

  • /dev/ttyS0“的主设备号是4,次设备号是64。它可以被dailout群组的用户读写。

  • /dev/zero“的主设备号是1,次设备号是5。它可以被任意用户读写。

在现代Linux系统中,处在”/dev“之下的文件系统会自动被udev()机制填充。