df -h统计的信息与du -sh不一致的原因(转)

有时候会遇到这样的问题:
df -h统计一个目录,显示有约100M可用空间,使用了5G;
而用du -sh统计该目录下的文件大小,却发现总共才占用了1G。
也就是说,二者统计结果差距巨大。

例如:

1、df -h /tmp/

结果:

Size Used Avail Use% Mounted on
3.9G 3.5G 220M 95% /tmp

2、du -sh /tmp/

结果:

132K    /tmp/

文章来源:http://www.codelast.com/

结果差异巨大。

引用网上的一段话,原因是这样的:

(1)This section gives the technical explanation of why du and df sometimes report different totals of disk space usage.
When a program that is running in the background writes to a file while the process is running, the file to which this process is writing is deleted.
Running df and du shows a discrepancy in the amount of disk space usage. The df command shows a higher value.
(2)The difference is that whenever an application has an open file, but the file is already deleted,
then it is counted in the df output (because the space is certainly not free) but not in du (because it is not being used by a file). 

如何查看是什么进程导致的问题?

假设你发现是 /tmp/ 目录不对劲,那么就这样就可以查看:

lsof | grep /tmp/

输出的结果中,注意某些含有“(deleted)”字样的记录,它们中的一部分就是罪魁祸首,将它们kill掉即可(如果可以重启这些进程所对应的服务的话,也有可能解决问题)。

http://www.codelast.com/?p=1066

时间: 2024-10-19 15:55:44

df -h统计的信息与du -sh不一致的原因(转)的相关文章

Centos 6.5版本,df -h出来的容量与du -sh的容量不对应是怎么会事呢?

问题如题,df -h 出来的容量与du -sh 查看的容量信息不一样,是那里出了问题了吗? 下面分别是du -sh *与df -h出来的结果 [[email protected] /]# du -sh * 6.2M bin 22M boot 172K dev 29M etc 165G home 130M lib 26M lib64 16K lost+found 4.0K media 4.0K mnt 4.0K opt du: 无法访问"proc/9139/task/9139/fd/4"

linux 故障:df -h统计磁盘空间占用太多,但又du -h找不到大的文件

用lsof / | grep -i delete 从根目录定位打开的被删除的文件 如果定位到某文件占用空间很大 主要是因为我们在删除这个日志文件的时候是用rm -rf *.log这样的命令删除的,删除日志之后又没有重启相应的进程,导致inode节点不被释放,空间一直被占用.如果我们用echo “ ” > /logpath/201109.log这样的命令来清空日志 相关工具: df -h du -h du -sh du -h --max-depth=1 lsof / | grep -i delet

df -h 与du -sh

df -h :查看目录或文件所占用磁盘空间的情况 du -sh :查看目录或文件所占用磁盘空间的情况 二者的区别:(两种说法,一个原因) 1)应用程序打开的文件句柄没有关闭的话,会造成df命令显示的剩余磁盘空间少.而du则不会 2)因为反复的删除文件导致的磁盘产生碎片,占用了磁盘空间,df -h会将这些碎片占用的磁盘空间统计出来,而du -sh不会将这些碎片占用的空间统计出来,因此二者统计到的结果往往会是df -h占用搞的比较大 原文地址:https://www.cnblogs.com/daqi

详细分析du和df的统计结果为什么不一样

今天有个人问我du和df的统计结果为什么会不同.给他解析了一番,后来想想还是写篇文章从原理上来分析分析. 我们常常使用du和df来获取目录或文件系统已占用空间的情况.但它们的统计结果是不一致的,大多数时候,它们的结果相差不会很大,但有时候它们的统计结果会相差非常大. 例如: ##### df的统计结果 [[email protected] ~]# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/sda2 ext4 18G 1

诡异的磁盘空间100%报警分析得出df -h与du -sh的根本性差别

前言:早晨磁盘报警刚清空完tomcat和nginx日志,使用的命令是类似echo "" > show_web-error.log或者> show_web-debug.log清空语句,然后rm -rf 掉一些tar.gz包,空出来30G空间.而且也关闭了tomcat的debug信息.刚刚又接到报警,磁盘100%了.怎么回事??1,进去df -h下,确实100%了,如下所示:[[email protected] ~]# df -h文件系统              容量  已用

df -h和du -h 占用空间为什么差这么多?

当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力.   du可以查看文件及文件夹的大小. 两者配合使用,非常有效.比如用df查看哪个一级目录过大,然后用df查看文件夹或文件的大小,如此便可迅速确定症结. 下面分别简要介绍 df命令可以显示目前所有文件系统的可用空间及使用情形,请看下列这个例子: 以下是代码片段: [[email protected] ~]$ df -hFilesystem 

df和du显示的磁盘空间使用情况不一致的原因及处理

在Linux下查看磁盘空间使用情况,最常使用的就是du和df了.然而两者还是有很大区别的,有时候其输出结果甚至非常悬殊. 1. 如何记忆这两个命令 du-Disk Usage df-Disk Free 2. df 和du 的工作原理 2.1 du的工作原理 du命令会对待统计文件逐个调用fstat这个系统调用,获取文件大小.它的数据是基于文件获取的,所以有很大的灵活性,不一定非要针对一个分区,可以跨越多个分区操作.如果针对的目录中文件很多,du速度就会很慢了. 2.2 df的工作原理 df命令使

linux df -h显示空间信息不正确

在linux系统上有时发现使用df 查看磁盘已使用空间和使用du统计的不相等,例如: [running][email protected]:/$ df -h Filesystem            Size  Used Avail Use% Mounted on /dev/sda1             9.9G  4.0G  5.4G  43% / /dev/sda3              20G  1.4G   18G   8% /usr/local /dev/sda4      

lsof处理df和du大小不一致的问题

APP服务器根满了,一直报警 df显示根分区已经使用了90%的空间,但是du根分区总和只有40G左右,该分区应该没有大量小文件,所以应该不会产生大量小文件导致的block写满的问题. 网上搜了下发现有可能是有程序操作大文件导致文件句柄没有释放,这些被程序占用着的文件句柄会被df认为是存在硬盘上的. 网上是这么解释的: du是把目录下所有的文件统计另起来,而df是从文件系统考虑,统计被分配出去的空间,并且包括被程序申请占用的空间. 如果看来,/目录下应该有大量空间被某个程序占用了. 处理方法 ls