我已经执行了两个注释,但两个输出中的大小似乎都不同。
ls -lh
total 147M
-rw------- 1 root root 3.4K Sep 30 14:58 anaconda-ks.cfg
-rw-r--r-- 1 root root 247 Sep 30 14:58 install.post.log
-rw-r--r-- 1 root root 54 Sep 30 14:58 install.postnochroot.log
-rw-r--r-- 1 root root 147M Sep 30 14:58 jdk-7u79-linux-x64.gz
ls -l --si
total 154M
-rw------- 1 root root 3.5k Sep 30 14:58 anaconda-ks.cfg
-rw-r--r-- 1 root root 247 Sep 30 14:58 install.post.log
-rw-r--r-- 1 root root 54 Sep 30 14:58 install.postnochroot.log
-rw-r--r-- 1 root root 154M Sep 30 14:58 jdk-7u79-linux-x64.gz
答案 0 :(得分:0)
如果您使用命令man ls
检查了ls的联机帮助页,您会看到以下内容:
-l use a long listing format
-h, --human-readable
with -l and/or -s, print human readable sizes (e.g., 1K 234M
2G)
-i, --inode
print the index number of each file
-s, --size
print the allocated size of each file, in blocks
所以你看,每个参数只定义了什么以及如何将信息放到屏幕上。您看到的(大小差异)是-h
或--human-readable
命令,它将输出更多可读文件大小而不是始终打印字节。使用-s
将在HDD上的blocks
中打印文件大小,这取决于文件系统的块大小。根据提供的信息,我会说你的文件系统有1kb
块大小。因此,该文件的实际内容为3.4kb
,但必须填写块,因此在您的磁盘上该文件需要4kb
或4 blocks
空间。
答案 1 :(得分:0)
手册页说-s
表示"在块"中打印每个文件的分配大小。所以假设你有1KB的块大小,你的文件是3.4K。该文件需要4个块,而小于1KB的任何块仍需要一个1KB块。
但是,让我们说你的块大小是4KB ......在这种情况下,任何小于4KB的东西仍然需要一个4KB的块。这可能就是你在这里看到的。
您可以使用tune2fs
工具进行检查。例如:
# tune2fs -l /dev/tank/root | grep -i 'block size'
Block size: 4096
这显示了4096字节(例如,4KB)的块大小,这可能是默认值,因为我在创建该文件系统时没有指定任何自定义参数。