首页 > 代码库 > 由du,df 得出不同结果反应出的问题

由du,df 得出不同结果反应出的问题

最近遇到了因为某种异常情况导致某目录下日志暴增,在修复异常情况后,发现pm2 不能启动,查看日志发现原因为空间不足。

使用du -sh查看确实为空间不足。在rm -rf 删除之后,仍然不能启动。这时用df -h发现该目录所在分区磁盘使用率已近100%。

出现该情况的原因是:

du与df计算空间大小的方法不同:

du: 是通过对所有文件逐个获取文件大小的,最后累加(所以在文件数量很大时,会很慢)

df: 是通过读取磁盘快信息(会很快)。

 

当rm -rf删掉文件后,du就找不到这些文件,也就不会进行大小计算了。而被进程引用的文件所占用的磁盘块信息仍然存在。所以出现了这种差异。

 

可以通过lsof |grep (deleted)|awk ‘{print $2}‘|sort -u|xargs kill 杀掉进程,释放资源。

 

由du,df 得出不同结果反应出的问题