免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 月光xia漫步
打印 上一主题 下一主题

[系统管理] df查看空间已经占用%100,但是找不到大文件 [复制链接]

论坛徽章:
71
15-16赛季CBA联赛之同曦
日期:2018-08-23 15:41:42辰龙
日期:2014-08-15 09:07:43狮子座
日期:2014-06-03 13:55:33亥猪
日期:2014-06-02 11:17:08巨蟹座
日期:2014-05-06 10:02:03午马
日期:2014-05-04 08:18:27亥猪
日期:2014-04-29 11:11:32技术图书徽章
日期:2014-04-24 15:51:26技术图书徽章
日期:2014-04-17 11:01:53辰龙
日期:2014-04-15 12:45:46亥猪
日期:2014-04-11 09:06:23射手座
日期:2014-04-01 15:28:10
11 [报告]
发表于 2014-07-17 10:25 |只看该作者
内存泄露了     

论坛徽章:
2
金牛座
日期:2014-05-24 15:42:55亥猪
日期:2014-08-12 15:00:33
12 [报告]
发表于 2014-07-17 12:47 |只看该作者
回复 10# carllai

恩,这也是一种办法。那我就自己想办法写日志试试吧,只要可以看到df和du获取的区别,我想,目的就应该达到了。


   

论坛徽章:
2
金牛座
日期:2014-05-24 15:42:55亥猪
日期:2014-08-12 15:00:33
13 [报告]
发表于 2014-07-17 12:49 |只看该作者
回复 11# zhaopingzi

这应该不算是内存泄露吧?
内存泄露是开辟的空间没有释放,这个应该是直接写硬盘了,只不过,使用du查看的时候,看不到而已。


   

论坛徽章:
0
14 [报告]
发表于 2014-07-17 13:32 |只看该作者
自己写个程序往日志里面一直写数据,然后删除日志文件,再看 lsof 不就还原场景了

论坛徽章:
2
金牛座
日期:2014-05-24 15:42:55亥猪
日期:2014-08-12 15:00:33
15 [报告]
发表于 2014-07-21 13:14 |只看该作者
回复 3# carllai
回复 4# Shell_HAT
回复 11# zhaopingzi
回复 14# wsxedcer

本来想着问题重现比较麻烦,所以一直没有尝试,今天发现,我本来以为最笨的方法——是用文件指针直接写数据的方法反而是最方便的方法,附上最简单的源码:

  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string.h>
  4. using namespace std;
  5. int main(int argc,char *argv[])
  6. {
  7.     FILE *fp;
  8.     fp = fopen("df.log","wb+");
  9.     if (NULL == fp)
  10.     {
  11.         cout<<"打开文件失败!"<<endl;
  12.         return -1;
  13.     }
  14.     char szStr[1024*1024*1024] = {0};
  15.     memset(szStr,1,sizeof(szStr));

  16.     while(1)
  17.     {
  18.         fputs(szStr,fp);
  19.         sleep(2);
  20.     }

  21.     int iRet = fclose(fp);
  22.     if (0 != iRet)
  23.     {
  24.         cout<<"文件关闭失败!"<<endl;
  25.         return -1;
  26.     }
  27.     return 0;
  28. }
复制代码
测试方法:
1、使用上述源码,生成可执行文件

2、通过df和du查看某分区的剩余空间和使用空间,例如:

[billing_dx@bmcs2 test]$df -h /tmp/
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/rootvg-lvtmp
                      4.0G  139M  3.7G   4% /tmp

[billing_dx@bmcs2 test]$du -sh /tmp/
2.4M    /tmp/

3、运行可可执行文件

4、删除生成的日志文件(我的也就是df.log)

5、重新使用df和du查看/tmp分区剩余空间和使用空间

[billing_dx@bmcs2 test]$df -h /tmp/
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/rootvg-lvtmp
                      4.0G  3.8G     0 100% /tmp

[billing_dx@bmcs2 test]$du -sh /tmp/
2.4M    /tmp/

注:通过上面,可以看到/tmp分区使用率已经达到了100% ,但是,该分区下查看文件占用空间依旧是2.4M

5、找到可执行文件对应进程,kill掉

6、重新使用df和du查看/tmp分区剩余空间和使用空间

[billing_dx@bmcs2 test]$df -h /tmp/
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/rootvg-lvtmp
                      4.0G  139M  3.7G   4% /tmp

[billing_dx@bmcs2 test]$du -sh /tmp/
2.4M    /tmp/

通过以上方法,就可以证明:当df和du统计空间的区别了:
The du user command gives the number of kilobytes contained in all files and,recursively, directories within each specified directory or file (filename).
The df user command displays the following information:
  amount of disk space occupied by currently mounted file systems
  the amount of used and available space
  how much of the file system's total capacity has been used.
【扩展阅读:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=465673
即du计算的文件的大小,而df计算的磁盘空间的使用和剩余空间。如果所有的文件指针都被正常的释放的话,两种方式获取的值不会有太大区别。
就像上面的例子,在我没有删除"df.log"文件之前,使用df和du查看/tmp分区剩余空间和使用空间如下:
[billing_dx@bmcs2 test]$df -h /tmp/
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/rootvg-lvtmp
                      4.0G  139M  3.7G   4% /tmp

[billing_dx@bmcs2 test]$du -sh /tmp/
3.5G    /tmp/

注:如果是和其他人共用一台服务器的话,一定要注意测试的时候,不要影响到其他人,毕竟,占用的分区立马升到了100%,有可能会影响到其他人的。

最后,感谢大家对这个问题的回答,谢谢~

论坛徽章:
8
2015年辞旧岁徽章
日期:2015-03-03 16:54:15午马
日期:2015-02-04 12:00:07羊年新春福章
日期:2015-02-04 11:57:56双子座
日期:2014-12-02 11:44:59金牛座
日期:2014-10-08 16:47:08狮子座
日期:2014-08-29 13:37:46巳蛇
日期:2014-08-26 17:32:29NBA常规赛纪念章
日期:2015-05-04 22:32:03
16 [报告]
发表于 2014-08-07 09:42 |只看该作者
学习了                  
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP