41、解决du与df统计不一致的解决方法
41.1、案例说明:
通过df -hT和du -sh /、du -h --max-depth=1 /命令
发现磁盘的使用不量不一致,使用'df -hT'命令查看磁盘的使用量要
比使用'du -sh /'命令查看磁盘用量要大;
41.2、原因:
硬盘空间消失是因为删除的文件被其他程序引用,导致空间无法回收,所以解
决的方法也很简单,找到引用文件的相关进程,然后停掉进程让空间回收即可;
41.3、查找引用已删除文件:
lsof | grep deleted | sort -nr -k7 | less
# 按已删除文件大小逆向排序
41.4、结束进程:
kill -9 "PID号"
41.4、补充:
du与df统计不一致的其它情况:
1、隐藏文件:
linux系统把文件名以.(点号)开头的文件视为隐藏文件,而类似bash里*这样的操作符是不会匹配隐藏文件的,所以如果根目录下有个较大
的隐藏文件的话,是不会被'du -sh /'命令统计到的,解决办法就是'cd /、du -sh \.[^.]*';
2、非空目录被mount:
一般挂载其他分区的时候都是建议mount到一个空目录的,那么如果mount到一个非空的目录,情况会怎么样呢?比如/mnt目录本来里面
是有文件的,然后执行了sudo mount /dev/sda6 /mnt,其实这个mount命令完全能正常执行,被mount的分区也能正常访问,只是原先在
/mnt里的文件,现在已经访问不到了,包括du也看不到大小了,但是磁盘空间却还是被占着,因为如果你 umount /mnt 以后,原来的文件
都还会回来的。
3、空洞文件:
一个文件的大小和所占磁盘空间也不一定完全一致,比如某个程序一直打开着一个叫log的文件在写,而中间有人用 >log 命令清除了log的
内容,就会产生这样的文件。