所以我最近问了这个问题,这让我运行了这个命令:
$ du -sk /dev/*
它输出大约 353 个不同的条目,如下所示:
0 /开发/标准 0 /开发/标准错误 0 /开发/标准输入 0 /开发/标准输出 0 /开发/系统跟踪 0 /开发/tty 0 /dev/tty.Bluetooth-Incoming-Port 0 /dev/tty.蓝牙调制解调器 0 /dev/ttyp0 0 /dev/ttyp1
gol*_*cks 16
它们是设备节点:
在类 Unix 操作系统中,设备文件或特殊文件是设备驱动程序的接口,它出现在文件系统中,就好像它是一个普通文件一样。[...] 它们允许软件使用标准输入/输出系统调用与设备驱动程序交互,这简化了许多任务并统一了用户空间 I/O 机制。
换句话说,它们不是普通文件,尽管它们可能被组织到常规目录中。从历史上看,这些是在磁盘上创建的实际节点,其中包含一些内核信息。在当代 linux 系统上,这已被特殊的内存文件系统devtmpfs所取代,就像/proc
内存中的 procfs 和/sys
内存中的 sysfs 一样。这就是为什么它们被列为 0 字节的原因——它们是与内核的直接接口。
至于它们都是什么,那篇维基百科文章中有一个关于“命名约定”的部分,尽管这没有约束力或通用性(它们可以从用户空间重命名,例如,RedHat/Fedora 派生的 udev 安装会这样做)。您可以从主要/次要编号中获得另外几条线索,显示在日期左侧的两列中ls -l
(其中“大小”是)。这些数字对应于/sys/dev/block
或 中的条目/sys/dev/char
。
请记住,这些设备中的大多数都是虚拟的,可能与硬件的任何特定部分几乎没有任何关系。例如,tty
设备是您可以使用 ctrl-alt-F[N] 导航的虚拟终端;pt
设备(它们有一个目录)是 GUI 模拟器中使用的伪终端。还有各种其他更深奥的东西,例如共享内存段(在下面shm
——这些具有实际大小)。同样,目的只是为内核提供标准化接口;“设备”的概念非常松散。
归档时间: |
|
查看次数: |
1150 次 |
最近记录: |