Answers:
/dev/null
并不是真正的文件。这是一个角色设备!
$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Apr 10 09:53 /dev/null
c
权限字符串(crw-rw-rw-
)的第一个字母表示这一点。对于常规文件,它将-
改为一个。
简单地说:/dev/null
不是文件,而是映射到文件系统中此路径的虚拟设备,其唯一目的是吞没和消失数据-就像黑洞一样。
不过,它也可以用作输入,然后它就像一个空文件(大小为0)并立即返回EOF(文件末尾)。
因此,您不能真正说它/dev/null
具有特定的文件大小,因为它不是任何存储介质上的常规文件。
设备文件充当某些内核功能的接口。它们仅占用目录条目(“ inode ”)所需的空间,但没有任何实际内容,也没有实际文件大小。
其他设备文件例如是/dev/sda
(通常是HDD或SSD),/dev/zero
(读取时生成零的文件)或/dev/random
(读取时生成随机数据的文件)。实际上,其中的所有文件/dev/
都是设备文件或指向设备文件的链接。
mknod
在所需的任何位置创建设备文件)。对于虚拟文件系统,例如/dev/
inode不会占用磁盘空间,而是会占用一些内存。
ls
并du
报告字符特殊设备的大小,例如/dev/null
或会/dev/random
产生0。