在 Linux 中管理设备

David Both 的头像

·

·

·

14,522 次阅读

探索 /dev 目录可以让您知道如何直接访问到 Linux 中的设备。

Linux 目录结构中有很多有趣的功能,这次我会讲到 /dev 目录一些迷人之处。在继续阅读这篇文章之前,建议你看看我前面的文章。Linux 文件系统一切皆为文件,这两篇文章介绍了一些有趣的 Linux 文件系统概念。请先看看 – 我会等你看完再回来。

……

太好了 !欢迎回来。现在我们可以继续更详尽地探讨 /dev 目录。

设备文件

设备文件也称为设备特定文件。设备文件用来为操作系统和用户提供它们代表的设备接口。所有的 Linux 设备文件均位于 /dev 目录下,是根 (/) 文件系统的一个组成部分,因为这些设备文件在操作系统启动过程中必须可以使用。

关于这些设备文件,要记住的一件重要的事情,就是它们大多不是设备驱动程序。更准确地描述来说,它们是设备驱动程序的门户。数据从应用程序或操作系统传递到设备文件,然后设备文件将它传递给设备驱动程序,驱动程序再将它发给物理设备。反向的数据通道也可以用,从物理设备通过设备驱动程序,再到设备文件,最后到达应用程序或其他设备。

让我们以一个典型命令的数据流程来直观地看看。

dboth-dev-dir_0.png

图 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/) 荣誉推出

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注