我有一个关于块大小和簇大小的问题。关于我所读到的内容,我假设如下:
如果我有以下输出:
$ stat test
File: `test'
Size: 13 Blocks: 4 IO Block: 2048 regular file
Device: 700h/1792d Inode: 15 Links: 1
Run Code Online (Sandbox Code Playgroud)
大小是以字节为单位的实际空间,块是物理使用的块(每个 512 字节),IO 块与创建 FS 时指定的块大小有关,这是否正确?
如果在包含一个字母的文件上运行 ls -l,它的大小将显示为 2B。如果您的文件系统是 4k 块,我认为它会将文件四舍五入到块大小?是不是因为 ls -l 实际上是从 inode 读取字节数?在 Linux 2.6 Kernel GNU utils 中,您在什么情况下会被四舍五入以阻止答案与实际字节数答案?
有和没有的区别-h
应该只是人类可读的单位,对吧?
那么显然没有...
$ du -s .
74216696 .
$ du -hs .
35G .
Run Code Online (Sandbox Code Playgroud)
或者也许我错了,结果du -s .
不在 KB 中?
如果我在目录中有以下内容:
empty_dir
: 空目录。empty_file
: 空的文件。one_char
: 由一个字符组成的文件。several_blocks
:由几个块组成的文件(但不是“太大”或“稀疏”)。然后,ls
将显示以下†:
$ ls -Gghs
total 152K
8,0K drwxr-xr-x 2 4,0K dec 21 23:34 empty_dir
4,0K -rw-r--r-- 1 0 dec 21 23:21 empty_file
8,0K -rw-r--r-- 1 1 dec 21 23:22 one_char
132K -rw-r--r-- 1 127K dec 22 00:14 several_blocks
Run Code Online (Sandbox Code Playgroud)
其次,stat
显示以下内容:
$ stat empty_dir/
File: empty_dir/
Size: 4096 Blocks: 16 IO Block: 4096 directory
...
$ stat empty_file
File: empty_file
Size: 0 Blocks: 8 IO Block: …
Run Code Online (Sandbox Code Playgroud) ls -l
这是在目录中运行的结果
total 28
-rwxrw-r-- 1 pr3t3nd pr3t3nd 188 Nov 20 20:28 exo1.sh
-rwxrw-r-- 1 pr3t3nd pr3t3nd 202 Nov 20 20:52 exo2_fonction.sh
-rwxrw-r-- 1 pr3t3nd pr3t3nd 176 Nov 20 20:30 exo2.sh
-rw-rw-r-- 1 pr3t3nd pr3t3nd 364 Nov 20 22:24 file
-rw-rw-r-- 1 pr3t3nd pr3t3nd 2912 Nov 20 23:47 file2
drwxrwxr-x 2 pr3t3nd pr3t3nd 4096 Nov 20 23:35 rep
-rwxrw-r-- 1 pr3t3nd pr3t3nd 102 Nov 20 23:45 script.sh
Run Code Online (Sandbox Code Playgroud)
ls -s
这是在同一目录下运行的结果
total 28
4 exo1.sh 4 exo2.sh 4 file2 4 …
Run Code Online (Sandbox Code Playgroud) filesystems ×3
ls ×3
coreutils ×2
ext3 ×2
block-device ×1
disk-usage ×1
linux ×1
osx ×1
stat ×1
terminology ×1