分类:
2008-10-31 16:52:29
4.12 file size
1. symbol link文件的大小 及ls看到的数值,是该link所指向的文件路径名的长度,可以认为是link文件本身的大小。
2. file hole:文件内部的空洞,是被计算到file size里面的,但是其实并不占据磁盘block赛。但是如果你读取空洞出的数据,得到的全是0。
$ ls -l core
-rw-r--r-- 1 sar 8483248 Nov 18 12:18 core
$ du -s core
272 core
可见,core文件存在很多空洞,它有
$ wc -c core
8483248 core
wc得到的文件大小包括了空洞。
$ cat core > core.copy
$ ls -l core*
-rw-r--r-- 1 sar 8483248 Nov 18 12:18 core
-rw-rw-r-- 1 sar 8483248 Nov 18 12:27 core.copy
$ du -s core*
272 core
16592 core.copy
我们把有空洞的文件core复制一份给core.copy里,发现两个文件的file size是一样的,但是core.copy真真正正的占据了磁盘空间,它没有了空洞,core原来的空洞被替换成了0
4.13 file truncation
#include int truncate(const char *pathname, off_t length); int ftruncate(int filedes, off_t length); |
Both return: 0 if OK, 1 on error |
Truncate不一定只是把文件给弄小了,可以清空,还可以使文件变大,当然增加的部分可能是增加了空洞。当然有些系统不支持增加。