發現一台用戶的電腦,df檢查出來的/磁盤空間占用了16G,比用du查看得到的磁盤空間大的多,du查看/下所有程序目錄加起來還不到5G。這是什么原因呢?
即便是有隱藏文件,查了也很小啊。
因為df和du的統計機制不一樣。
du會把指定目錄下所有文件、目錄、目錄下的文件都統計。是建立在文件系統能看到的的確確是有這樣一些文件的基礎上的。也就是說我們能在文件系統里面看到的文件才會被du統計。
df(df命令通過查看文件系統磁盤塊分配圖得出總塊數與剩余塊數。):
這要從程序寫文件的方式來談起,一個進程要向一個文件里面寫東西,那么會得到一個pointer,
然后向指針指向的文件(磁盤區域)寫入。假如由於某些原因(也可能人為)被指向的文件被刪除了,但是( write call)並不知道文件是否還在,就還會繼續向里面寫,不管文件是否存在,磁盤塊還是被寫操作使用。
於是因為文件沒有了,所以du統計不到寫入的這些磁盤塊,但是因為寫的進程還在,磁盤空間沒有被釋放,所以df卻能統計到,所以df統計的結果比du大很多。
如何解決呢?
1.停止系統上的程序。
2.如果還是不行,unmount一下文件系統看看
3.重啟系統