探索 /dev
目录可以让您知道如何直接访问到 Linux 中的设备。
Linux 目录结构中有很多有趣的功能,这次我会讲到 /dev
目录一些迷人之处。在继续阅读这篇文章之前,建议你看看我前面的文章。Linux 文件系统,一切皆为文件,这两篇文章介绍了一些有趣的 Linux 文件系统概念。请先看看 – 我会等你看完再回来。
……
太好了 !欢迎回来。现在我们可以继续更详尽地探讨 /dev
目录。
设备文件
设备文件也称为设备特定文件。设备文件用来为操作系统和用户提供它们代表的设备接口。所有的 Linux 设备文件均位于 /dev
目录下,是根 (/
) 文件系统的一个组成部分,因为这些设备文件在操作系统启动过程中必须可以使用。
关于这些设备文件,要记住的一件重要的事情,就是它们大多不是设备驱动程序。更准确地描述来说,它们是设备驱动程序的门户。数据从应用程序或操作系统传递到设备文件,然后设备文件将它传递给设备驱动程序,驱动程序再将它发给物理设备。反向的数据通道也可以用,从物理设备通过设备驱动程序,再到设备文件,最后到达应用程序或其他设备。
让我们以一个典型命令的数据流程来直观地看看。
图 1:一个典型命令的简单数据流程。
在上面的图 1 中,显示一个简单命令的简化数据流程。从一个 GUI 终端仿真器,例如 Konsole 或 xterm 中发出 cat /etc/resolv.conf
命令,它会从磁盘中读取 resolv.conf
文件,磁盘设备驱动程序处理设备的具体功能,例如在硬盘驱动器上定位文件并读取它。数据通过设备文件传递,然后从命令到设备文件,然后到 6 号伪终端的设备驱动,然后在终端会话中显示。
当然, cat
命令的输出可以以下面的方式被重定向到一个文件, cat /etc/resolv.conf > /etc/resolv.bak
,这样会创建该文件的备份。在这种情况下,图 1 左侧的数据流量将保持不变,而右边的数据流量将通过 /dev/sda2
设备文件、硬盘设备驱动程序,然后到硬盘驱动器本身。
这些设备文件使得使用标准流 (STD/IO) 和重定向访问 Linux 或 Unix 计算机上的任何一个设备非常容易。只需将数据流定向到设备文件,即可将数据发送到该设备。
设备文件类别
设备文件至少可以按两种方式划分。第一种也是最常用的分类是根据与设备相关联的数据流进行划分。比如,tty (teletype) 和串行设备被认为是基于字符的,因为数据流的传送和处理是以一次一个字符或字节进行的;而块类型设备(如硬盘驱动器)是以块为单位传输数据,通常为 256 个字节的倍数。
您可以在终端上以一个非 root 用户,改变当前工作目录(PWD
)到 /dev
,并显示长目录列表。 这将显示设备文件列表、文件权限及其主、次设备号。 例如,下面的设备文件只是我的 Fedora 24 工作站上 /dev
目录中的几个文件。 它们表示磁盘和 tty 设备类型。 注意输出中每行的最左边的字符。 b
代表是块类型设备,c
代表字符设备。
brw-rw- 1 root disk 8, 1 Nov 7 07:06 sda1
brw-rw- 1 root disk 8, 17 Nov 7 07:06 sdb1
brw-rw- 1 root tty 4, 0 Nov 7 07:06 tty0
crw--w- 1 root tty 4, 10 Nov 7 07:06 tty10
crw--w
via: <https://opensource.com/article/16/11/managing-devices-linux>
作者:[David Both](https://opensource.com/users/dboth) 译者:[erlinux](http://www.itxdm.me) 校对:[jasminepeng](https://github.com/jasminepeng)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织编译,[Linux中国](https://linux.cn/) 荣誉推出
发表回复