当前位置: 首页 > news >正文

linux 设备目录/dev 学习

文章目录

    • 一. 核心概念:一切皆文件
    • 二. 设备文件的类型
      • 2.1. 字符设备 (Character Devices)
      • 2.2. 块设备 (Block Devices)
    • 三. `/dev` 中常见的关键设备文件详解
    • 四. `/dev` 的管理机制:udev
    • 五. 实用操作示例
      • 5.1. 查看设备文件类型
      • 5.2. 屏蔽命令输出(使用 /dev/null)
      • 5.3. 创建一个大文件(使用 /dev/zero)
      • 5.4. 挂载 ISO 镜像(使用 /dev/loop)
      • 5.5. 查看磁盘分区
    • 六. 注意事项

在 Linux 系统中,/dev目录是一个极其特殊且核心的目录。它的全称是Device(设备)。

一. 核心概念:一切皆文件

Linux 遵循“一切皆文件”的设计哲学。/dev目录下存放的不是普通的数据文件,而是设备文件

  • 作用:它是内核与硬件设备(或虚拟设备)之间的接口。
  • 原理:当程序需要读取硬盘、键盘输入或向屏幕输出时它不需要直接操作硬件电路,而是像读写普通文件一样,对/dev下的特定文件进行open()read()write()操作。内核会通过设备驱动程序将这些操作转换为具体的硬件指令。

二. 设备文件的类型

/dev中,设备文件主要分为两大类:

2.1. 字符设备 (Character Devices)

  • 标识ls -l显示时,第一个字符为c
  • 特点:数据以字符流的形式逐个传输,不支持随机访问(不能_seek_)。
  • 典型例子
    • /dev/tty:终端设备。
    • /dev/null:空设备(黑洞)。
    • /dev/random:随机数生成器。
    • /dev/console:系统控制台。

2.2. 块设备 (Block Devices)

  • 标识ls -l显示时,第一个字符为b
  • 特点:数据以(block,通常为 512 字节或 4KB)为单位传输,支持随机访问(可以跳转到任意位置读写)。
  • 典型例子
    • /dev/sda:第一块 SATA/SCSI 硬盘。
    • /dev/nvme0n1:NVMe 固态硬盘。
    • /dev/loop0:回环设备(用于挂载 ISO 镜像等)。

💡注意:现代 Linux 系统中,还有网络设备(如 eth0),但它们通常不直接在/dev下体现为文件,而是通过 socket 接口操作。


三./dev中常见的关键设备文件详解

设备文件类型说明常见用途
/dev/autofs字符自动挂载Linux 内核模块和用户空间守护进程(daemon),用于自动挂载文件系统
/dev/bsg/x:x:x:x字符Block SCSI Generic(BSG)设备允许用户空间程序直接发送 SCSI 命令到 SCSI 或 SAS 设备,而无需通过传统的 SCSI 层抽象
/dev/null字符空设备 / 黑洞任何写入它的数据都会被丢弃;读取它立即返回 EOF。常用于屏蔽命令输出:
command > /dev/null 2>&1
/dev/zero字符零发生器读取它会无限返回\0(空字符)。常用于创建指定大小的空文件:
dd if=/dev/zero of=test.img bs=1M count=100
/dev/full字符满设备写入它会返回“磁盘空间不足”错误;读取它返回无限多的\0。用于测试程序处理磁盘满的情况。
/dev/random字符真随机数从环境噪声中收集熵生成随机数。如果熵池不足,读取会阻塞等待。用于高安全性加密密钥生成。
/dev/urandom字符伪随机数非阻塞随机数生成器。如果熵不足,会使用算法补充。速度快,适用于大多数非极高安全场景。
/dev/tty字符当前终端指向当前进程控制的终端。例如在脚本中向当前用户屏幕发消息。
/dev/console字符系统控制台系统启动信息和内核消息输出的地方。
/dev/sdXSCSI/SATA 硬盘sda是第一块盘,sdb是第二块…sda1是第一个分区。
/dev/nvmeXnYNVMe 硬盘现代高速 SSD 的命名方式。nvme0n1表示第一个控制器的第一个命名空间。
/dev/loopX回环设备将普通文件模拟成块设备。常用于挂载.iso镜像文件。

四./dev的管理机制:udev

在早期的 Linux 系统中,/dev下的文件是静态创建的(通过mknod命令),数量固定且庞大。

现代 Linux 使用udev设备管理器:

  • 动态创建:当内核检测到新硬件插入(如插入 U 盘)时,udev会自动在/dev下创建对应的设备文件。
  • 动态删除:当硬件移除时,设备文件自动消失。
  • 规则定制:管理员可以通过/etc/udev/rules.d/自定义规则,例如:插入特定 USB 设备时,自动将其映射为/dev/my_usb并设置权限。

你可以查看udev的服务状态:

systemctl status systemd-udevd

五. 实用操作示例

5.1. 查看设备文件类型

ls-l/dev/sda /dev/null /dev/random# 输出示例:# brw-rw---- 1 root disk 8, 0 Apr 10 10:00 /dev/sda # b = 块设备# crw-rw-rw- 1 root root 1, 3 Apr 10 10:00 /dev/null # c = 字符设备# crw-rw-rw- 1 root root 1, 8 Apr 10 10:00 /dev/random # c = 字符设备

5.2. 屏蔽命令输出(使用 /dev/null)

# 将标准输出和错误输出都丢进黑洞find/-name"test.txt">/dev/null2>&1

5.3. 创建一个大文件(使用 /dev/zero)

# 创建一个 1GB 的空文件,全部填充为 0ddif=/dev/zeroof=./bigfile.imgbs=1Mcount=1024

5.4. 挂载 ISO 镜像(使用 /dev/loop)

# 将 ubuntu.iso 挂载到 /mnt/isosudomount-oloop ubuntu.iso /mnt/iso# 系统会自动分配一个 /dev/loopX 设备

5.5. 查看磁盘分区

lsblk# 或fdisk-l# 这些命令本质上是在读取 /dev/sdX 等块设备的信息

六. 注意事项

⚠️不要随意删除/dev下的文件!

  • 虽然udev可以重新创建设备文件,但手动删除可能导致正在运行的服务(如数据库、Web 服务器)无法访问硬件,导致系统崩溃或服务中断。
  • 严禁/dev/sda等块设备进行rm操作(虽然 rm 删的是文件节点,但误操作格式化mkfs或 dd 写入会销毁数据)。

⚠️权限问题

  • 大多数设备文件属于root用户或特定组(如disk,tty,audio)。
  • 普通用户通常只能访问与自己相关的设备(如/dev/tty1),访问硬盘设备通常需要sudo权限。

http://www.jsqmd.com/news/822925/

相关文章:

  • 如何使用Redis优化Trigger.dev任务队列:提升AI工作流性能的完整指南
  • 为hermes agent配置taotoken自定义供应商的完整流程
  • 模型下载与转换实战:从HuggingFace到GGUF/SafeTensors,格式、量化与校验全解析
  • 物联网服务选型指南:从核心模块解析到实战避坑
  • 别让电源拖后腿!手把手教你用Sigrity PowerDC搞定PCB直流压降仿真(附HyperLynx SPD转换指南)
  • 甘肃大手印玫瑰科技的玫瑰精油美妆产品性价比高不高? - myqiye
  • OpenMC多群截面计算深度解析:传输修正合并的3种解决方案与性能优化实战
  • Six Degrees of Wikipedia完全教程:从零开始探索维基百科的六度分离
  • 星链引擎:企业级营销 SaaS 混合多租户架构设计与工程化落地
  • MoneyPrinterTurbo:智能AI视频生成工具的革命性解决方案
  • 2025届必备的十大AI写作工具实际效果
  • 如何快速掌握RSA参数计算:密码学开发的终极指南
  • BaklavaJS执行引擎详解:实现节点图的拓扑排序与数据流计算 [特殊字符]
  • 告别繁琐宏命令!GSE插件如何让魔兽世界技能管理变得轻松智能
  • 如何快速构建CLIP-as-service机器学习平台:与Kubeflow和MLflow的完整整合指南
  • Minecraft 1.21终极指南:如何5分钟完成MASA全家桶模组中文汉化
  • 基于Cloudflare Workers构建轻量级全文搜索引擎的实践指南
  • LZ4并行压缩:线程池设计与性能瓶颈突破的终极指南
  • Windows Cleaner:解决C盘爆红问题的3个高效方法
  • 如何从零开发自定义技术指标:ta-lib-python终极指南
  • 30套高级毕业答辩ppt模版(免费下载)
  • 模型服务化部署:用vLLM/Ollama搭建高并发API,支持流式输出与多轮对话
  • 如何快速掌握CLIP-as-service客户端开发:Python/HTTP/gRPC多协议接入完整指南
  • PYTHON基础入门----商品库存管理系统
  • 5个步骤实现SEB环境绕过:深度解析虚拟机检测突破技术
  • 生产报工场景实测:实在Agent如何颠覆传统RPA,实现数据处理效率降维打击
  • 满洲里旅行社怎么选不踩坑?5家实力机构全维度盘点与避坑指南 - 深度智识库
  • 实测 Taotoken 多模型 API 的响应延迟与稳定性表现
  • 一次 malloc,半个 GB:硬核解构 llm.c 如何用纯 C 管理 1.24 亿参数
  • React Native Navigation在AR应用中的终极指南:场景切换和交互页面导航