昨天阿里巴巴的笔试中出现这一个题目,直接给鄙视了,得补补linux 的知识点:
因为df和du的统计机制不一样。
du会把指定目录下所有文件、目录、目录下的文件都统计。是建立在文件系统能看到的的确确是有这样一些文件的基础上的。也就是说我们能在文件系统里面看到的文件才会被du统计。
df(
df命令通过查看文件系统磁盘块分配图得出总块数与剩余块数。):
这要从程序写文件的方式来谈起,一个进程要向一个文件里面写东西,那么会得到一个pointer,
然后向指针指向的文件(磁盘区域)写入。假如由于某些原因(也可能人为)被指向的文件被删除了,但是(
write call)并不知道文件是否还在,就还会继续向里面写,不管文件是否存在,磁盘块还是被写操作使用。
于是因为文件没有了,所以du统计不到写入的这些磁盘块,但是因为写的进程还在,磁盘空间没有被释放,所以df却能统计到,所以df统计的结果比du大很多。
如何解决呢?
1.停止系统上的程序。
2.如果还是不行,unmount一下文件系统看看
3.重启系统