0

0

Linux文件系统虚拟目录dev详解

P粉602998670

P粉602998670

发布时间:2025-09-03 08:08:01

|

577人浏览过

|

来源于php中文网

原创

/dev是Linux系统中用于设备访问的虚拟文件系统,由devtmpfs或tmpfs提供支持,不占用实际磁盘空间,体现“一切皆文件”设计。其主要包含字符设备(如/dev/tty*、/dev/random)和块设备(如/dev/sda、/dev/nvme0n1),分别以‘c’和‘b’标识,通过主次设备号关联内核驱动。关键设备文件包括:/dev/null(丢弃数据)、/dev/zero(输出空字节)、/dev/random与/dev/urandom(提供随机数)、/dev/tty(控制终端)、/dev/console(系统控制台)。现代系统通过udev服务动态管理/dev内容,响应硬件事件自动创建或删除设备文件,并支持自定义命名规则和权限设置,确保设备一致性。/dev通常挂载为devtmpfs,启动时由内核初始化,随后由udev接管,所有内容驻留内存,重启后重建。/dev/shm则常用于tmpfs共享内存,独立于设备管理。理解/dev结构对系统调试、脚本编写和权限控制至关重要,尤其在嵌入式开发和故障排查中需手动干预时尤为关键。

linux文件系统虚拟目录dev详解

在Linux系统中,/dev 目录是一个虚拟文件系统挂载点,通常由 devtmpfstmpfs 提供支持,用于存放设备文件。这些设备文件是用户空间与内核设备驱动交互的接口,虽然看起来像普通文件,但并不占用实际磁盘空间。它们是访问硬件设备的标准方式,体现了Linux“一切皆文件”的设计理念。

设备文件的基本类型

/dev 中的设备文件主要分为两种类型:

  • 字符设备(Character Devices):以字节流方式传输数据,不支持随机访问。常见设备包括终端(/dev/tty*)、串口(/dev/ttyS*)和随机数生成器(/dev/random)。
  • 块设备(Block Devices):以固定大小的数据块进行读写,支持随机访问。典型的如硬盘(/dev/sda、/dev/nvme0n1)和光驱(/dev/cdrom)。

通过 ls -l /dev 可查看设备类型,其中第一个字符为 'c' 表示字符设备,'b' 表示块设备。每个设备文件都有主设备号(major number)和次设备号(minor number),用于内核识别对应的驱动程序和具体设备实例。

核心设备文件与用途

/dev 包含许多关键设备文件,用于系统运行和用户操作:

  • /dev/null:空设备,写入的数据被丢弃,读取时返回EOF。常用于屏蔽输出,如 command > /dev/null
  • /dev/zero:提供无限的空字节流(0x00),可用于创建指定大小的空文件,如 dd if=/dev/zero of=file.img bs=1M count=100
  • /dev/random/dev/urandom:提供加密级随机数据。/dev/random 阻塞等待熵池充足,/dev/urandom 非阻塞,适合大多数应用。
  • /dev/tty:代表当前进程的控制终端,用于程序与终端交互。
  • /dev/console:系统控制台,通常用于内核消息输出。

udev 与设备管理自动化

现代Linux系统使用 udev 服务动态管理 /dev 目录内容。当内核检测到硬件(如插入U盘),会发送uevent事件,udev根据规则创建或删除对应的设备文件,并可设置权限、符号链接和执行自定义脚本。

udev规则文件位于 /etc/udev/rules.d/,可实现如固定USB设备名称的功能。例如,通过设备序列号创建指向 /dev/my_usb_disk 的链接,避免设备每次插入时名称变化(如 /dev/sdb1 → /dev/sdc1)。

Orz企业网站管理系统 双语版
Orz企业网站管理系统 双语版

Orz企业网站管理系统整合了企业网站所需要的大部分功能,并在其基础上做了双语美化。压缩包内有必须的图片psd源文件,方便大家修改。 Orz企业网站管理系统功能: 1.动态首页 2.中英文双语同后台管理 3.产品具有询价功能 4.留言板功能 5.动态营销网络 6.打印功能 7.双击自动滚动 Orz企业网站管理系统安装 1、请将官方程序包解压后上传至您的虚拟主机即可正常使用; 2、后台管理面板登录:

下载

用户一般无需手动创建设备文件,mknod 命令可用于特殊情况,但推荐依赖udev自动管理。

tmpfs 与 devtmpfs 的作用

/dev 通常挂载为 devtmpfs,在系统启动早期由内核自动填充基础设备节点。随后 udev 接管,动态增删设备文件。该文件系统驻留在内存中,重启后内容消失。

部分系统将 /dev/shm 挂载为 tmpfs,用于共享内存通信,但这是独立于设备管理的用途。

基本上就这些。/dev 是Linux设备访问的核心枢纽,理解其结构和机制有助于系统调试、脚本编写和权限管理。虽然多数操作由系统自动完成,但在嵌入式开发或故障排查时,手动查看或干预 /dev 内容仍十分必要。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

231

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

435

2024.03.01

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

727

2023.08.22

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

196

2023.11.20

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1010

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

58

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

356

2025.12.29

console接口是干嘛的
console接口是干嘛的

console接口是一种用于在计算机命令行或浏览器开发工具中输出信息的工具,提供了一种简单的方式来记录和查看应用程序的输出结果和调试信息。本专题为大家提供console接口相关的各种文章、以及下载和课程。

411

2023.08.08

c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

25

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.9万人学习

Git 教程
Git 教程

共21课时 | 2.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号