Linux /dev 目录是什么?字符设备、块设备及常用设备文件详解

AI 概述
Linux 系统中 /dev 是设备文件系统,是 “一切皆文件” 理念的核心,包含所有可用设备接口,设备以文件形式通过标准文件操作与硬件交互。其设备文件分字符设备(如键盘、鼠标,实时传输无缓存)和块设备(如硬盘、U 盘,块传输可随机访问),由 udev 动态管理,还有 /dev/null 等特殊设备文件,掌握其结构功能对系统管理和开发至关重要。
目录
文章目录隐藏
  1. /dev 目录概述
  2. 设备文件两大类型
  3. 设备文件的创建与管理
  4. 常见的设备文件
  5. 设备文件的权限管理
  6. 访问设备文件的示例
  7. 结语

Linux /dev 目录是什么?字符设备、块设备及常用设备文件详解

在 Linux 操作系统中,/dev目录是核心的设备文件系统,承载着“一切皆文件”的设计理念,包含所有可用设备的接口。这里的每一个设备都被抽象为文件,用户可通过标准文件操作与硬件交互,是系统与硬件沟通的关键桥梁,也是理解 Linux 系统管理与硬件交互的基础。接下来小便和大家一起了解下 Linux 系统中 /dev 目录的结构及功能。

/dev 目录概述

在 Linux 操作系统中,/dev 目录是一个特殊的文件系统(设备文件系统),其中包含了所有可用设备的接口。每个设备在 Linux 中都被视为一个文件,从而可以通过标准的文件操作(如打开、读取、写入和关闭)来与硬件设备进行交互。/dev 是 Linux 实现 “一切皆文件” 的核心目录,这种设计符合 Linux。

设备文件两大类型

/dev 目录下的设备文件主要分为以下几种类型:

1、字符设备文件

  • 这些设备文件以字符为单位进行数据传输,如键盘、串口和鼠标。
  • 访问字符设备时,通常不会缓存数据,而是实时处理。
  • 典型设备:终端、键盘、鼠标、串口、打印机
  • 常见节点:
    /dev/tty[1-6]:虚拟控制台(Ctrl+Alt+F1~F6 切换)
    /dev/tty:当前控制终端
    /dev/console:系统控制台
    /dev/ttyS0:串口 1
    /dev/input/event0:键盘 / 鼠标输入事件
    /dev/fb0:帧缓冲(图形显示)

2、块设备文件

  • 这些设备文件以块为单位进行数据传输,常用于存储设备,如硬盘、USB 驱动器和光盘。
  • 块设备允许随机访问,因此可以在任意位置读取或写入数据。
  • 典型设备:硬盘、SSD、U 盘、光盘
  • 常见节点:
    /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
  • c:表示字符设备文件
  • rw-rw----:权限说明,表示属主和所属组有读写权限,其他用户没有权限
  • root:设备文件的属主
  • disk:设备文件的所属组

访问设备文件的示例

在 Linux 中,你可以通过设备文件执行各种操作。以下是一些常见的示例:

  • 查看磁盘信息:
    sudo fdisk -l /dev/sda
  • 将输出重定向到 /dev/null,通常用于丢弃不需要的输出:
    echo "test" > /dev/null 2>&1
  • 读取随机数:
    head -c 10 /dev/urandom
  • 写入数据到  /dev/zero 以生成一个指定大小的文件:
    dd if=/dev/zero of=myfile bs=1M count=10

结语

/dev 目录是 Linux 系统中至关重要的组成部分,提供了与硬件交互的接口。理解 /dev 目录的结构和功能对于系统管理、故障排除以及开发工作都是非常重要的。通过掌握设备文件的使用,用户可以更有效地管理和利用系统资源。

以上关于Linux /dev 目录是什么?字符设备、块设备及常用设备文件详解的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

9

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » Linux /dev 目录是什么?字符设备、块设备及常用设备文件详解

发表回复