解决df和du查出来的已使用空间不同的问题
2015-12-05 15:01
204 查看
声明作者:昨夜星辰博客:http://yestreenstars.blog.51cto.com/本文由本人创作,如需转载,请注明出处,谢谢合作!目的解决df和du查出来的已使用空间不同的问题记录我之前在系统上写过一个监控硬盘剩余空间的脚本,今天它给我发来报警了,于是我就登录到服务器上查看,结果发现df和du查出来的结果不一样,du查出来的“实际使用空间”明显比df查出来的已使用空间要小很多,这是为什么呢?难道有些空间被隐藏起来了?
最终,借助网上的力量,解决了这个“诡异”的事件,并全程记录下来了。
首先,我们用df来查看已使用空间:
![](http://s2.51cto.com/wyfs02/M00/77/11/wKioL1ZihlrRg2FJAAAPArlNelk871.png)
从上图可知,根分区已使用5456700KB(合约5.20GB)。
然后,我们用du查出根分区下每个目录的大小:
![](http://s4.51cto.com/wyfs02/M01/77/13/wKiom1ZihjjhncOJAAAcGKQ8ork023.png)
排除红框中的两个目录(因为他们是挂载上去的),所有目录的总大小为3075332KB(合约2.93GB),比df查出来足足小了2.27GB。
为什么会少了这么多空间呢?
其实是因为我们之前删除了一些进程正在写入的文件,虽然已经被我们删除了,但只要进程还在,那个文件就不会被真正地删除,只是被临时存放到系统的某个地方而已,有点类似于Windows的回收站。
想解决这个问题,最简单地就是重启服务器了,但是生产环境一般都不会轻易重启的,所以我们可以通过其他方式来解决。
先用lsof命令配合grep命令查出哪些是已经被删除,却依旧占用系统空间的“无赖”。
![](http://s2.51cto.com/wyfs02/M00/77/11/wKioL1ZiiL7SfJ_aAAA-jj7eLq4556.png)
上图红框中的文件正是我之前删除的一个大文件,我现在尝试去重启这个程序(node),我直接kill掉这个进程,因为我做了自动启动,所以我不用手动去启动它。
![](http://s4.51cto.com/wyfs02/M02/77/11/wKioL1ZiiWfQedznAAACvqQJKyk834.png)
然后再用df命令来查看已使用空间:
![](http://s1.51cto.com/wyfs02/M02/77/11/wKioL1ZiianxLXqFAAAPAkrCYvU515.png)
已使用空间一下子下降到3226324KB(合约3.08GB),已经很接近du统计的总空间了。
接下来,我逐个重启了其他deleted的文件,最终df查出来的大小就和du统计的总空间差不多大了。
到此,就解决了df和du查出来的结果不同的文件,赶走了系统里的“无赖”,索回属于我们的空间。
如果读者根据此法依旧无法解决问题,说明你们的情况可能跟我的不太一样。
最终,借助网上的力量,解决了这个“诡异”的事件,并全程记录下来了。
首先,我们用df来查看已使用空间:
![](http://s2.51cto.com/wyfs02/M00/77/11/wKioL1ZihlrRg2FJAAAPArlNelk871.png)
从上图可知,根分区已使用5456700KB(合约5.20GB)。
然后,我们用du查出根分区下每个目录的大小:
![](http://s4.51cto.com/wyfs02/M01/77/13/wKiom1ZihjjhncOJAAAcGKQ8ork023.png)
排除红框中的两个目录(因为他们是挂载上去的),所有目录的总大小为3075332KB(合约2.93GB),比df查出来足足小了2.27GB。
为什么会少了这么多空间呢?
其实是因为我们之前删除了一些进程正在写入的文件,虽然已经被我们删除了,但只要进程还在,那个文件就不会被真正地删除,只是被临时存放到系统的某个地方而已,有点类似于Windows的回收站。
想解决这个问题,最简单地就是重启服务器了,但是生产环境一般都不会轻易重启的,所以我们可以通过其他方式来解决。
先用lsof命令配合grep命令查出哪些是已经被删除,却依旧占用系统空间的“无赖”。
![](http://s2.51cto.com/wyfs02/M00/77/11/wKioL1ZiiL7SfJ_aAAA-jj7eLq4556.png)
上图红框中的文件正是我之前删除的一个大文件,我现在尝试去重启这个程序(node),我直接kill掉这个进程,因为我做了自动启动,所以我不用手动去启动它。
![](http://s4.51cto.com/wyfs02/M02/77/11/wKioL1ZiiWfQedznAAACvqQJKyk834.png)
然后再用df命令来查看已使用空间:
![](http://s1.51cto.com/wyfs02/M02/77/11/wKioL1ZiianxLXqFAAAPAkrCYvU515.png)
已使用空间一下子下降到3226324KB(合约3.08GB),已经很接近du统计的总空间了。
接下来,我逐个重启了其他deleted的文件,最终df查出来的大小就和du统计的总空间差不多大了。
到此,就解决了df和du查出来的结果不同的文件,赶走了系统里的“无赖”,索回属于我们的空间。
如果读者根据此法依旧无法解决问题,说明你们的情况可能跟我的不太一样。
相关文章推荐
- Linux 命令每天必学(34)之du命令
- Linux du命令查看文件夹大小并按降序排列
- du meter注册码包括3.5与4.0(所有版本通用)
- 实例详解Linxu中df命令
- 为什么df和du看到的数据量不一样?
- 在 Linux 下你所不知道的 df 命令的那些功能
- Linux下查看文件和文件夹大小
- Linux入门 Part2: 目录操作(5) - du 查看目录文件大小
- Linux中du命令使用介绍
- df 和 du 命令详解
- 《du命令》-linux命令五分钟系列之三
- du命令
- 文章标题
- Linux查看磁盘分区等命令和相关工具介绍
- linux 下df和du的区别
- apue编程之参考du代码利用递归写的一个简单的du命令的源代码
- 一次Linux磁盘空间清理的经历
- df命令和参数详解
- df查看磁盘
- du查看文件大小