alp*_*pha 21 linux udev devices block-device linux-kernel
我大致了解位于/dev 下的文件。
我知道有两种类型(字符/块),访问这些文件与内核中的驱动程序通信。
我想知道如果我删除一个会发生什么——特别是对于这两种类型的文件。如果我删除一个块设备文件,比如说/dev/sda
,这有什么影响——如果有的话——有什么影响?我刚刚卸载了磁盘吗?
同样,如果我删除/dev/mouse/mouse0
- 会发生什么?鼠标停止工作了吗?它会自动替换自己吗?
我什至可以删除这些文件吗?如果我设置了虚拟机,我会尝试一下。
mic*_*has 30
这些只是(特殊)文件。它们仅用作指向实际设备的“指针”。(即内核中的驱动模块。)
如果某些命令/服务已打开该文件,则它已经拥有设备的句柄并将继续工作。
如果某些命令/服务尝试打开新连接,它将尝试访问该文件并因“找不到文件”而失败。
通常这些文件由 填充udev
,它会在系统启动和特殊事件(如插入 USB 设备)时自动创建它们,但您也可以使用mknod
.
设备文件实际上是内核设备表中条目的文件系统别名。如果您使用“ls -l”查看 /dev 文件,您会看到它们有一个主要设备号和一个次要设备号。如果您从文件系统中删除文件,您始终可以使用适当的工具重新创建它们,以将特殊文件重新链接到内核设备表中的条目——请参阅 mknod(1)。