truncate的用法还是通过实战来解释吧,如下: 以下是引用片段: lily@LLY ~$ echo -n 1234567 > txt lily@LLY ~$ cat txt 1234567lily@LLY ~$ lily@LLY ~$ truncate -s 4 txt lily@LLY ~$ cat txt 1234lily@LLY ~$ lily@LLY ~$ ls -l txt -rw-r--r-- 1 lily lily 4 10月 24 16:54 txt lily@LLY ~$ truncate -s 1M txt lily@LLY ~$ ls -l txt -rw-r--r-- 1 lily lily 1048576 10月 24 17:17 txt lily@LLY ~$ du txt 4 txt lily@LLY ~$ wc -c txt 1048576 txt这里还可以看到一个“奇怪”的现象,本来已经缩至4字节的文件,把它扩展成1M以后,ls 和 wc 的结果显示大小确实是1M,但是 du 的结果却发现大小还是4字节。这也是要注意的地方之一,这种文件称为“空洞文件”,也就是说,文件的部分内容并没有实际存在于硬盘上(即没有分配对应的inode),只是“声称”有1M的大小而已。对于不存在于硬盘上的那部分字节,如果去读的话,也是不会报错的,会读到全0的数据。 这也从另一个方面反映出ls等命令默认显示的是文件“声称”的大小,而du (disk use)默认显示的是真正的磁盘占用。这里是我以前的另外一个例子。 转载请保留固定链接: https://linuxeye.com/Linux/1916.html |