zoukankan      html  css  js  c++  java
  • Linux中du、df显示不一致问题

    Linux中du、df显示不一致问题


    最近在做关于Q博士的项目的时候,用到了docker进行部署,对于后端服务可能会经常变动,于是将docker容器的jar包与宿主机目录下的jar包进行绑定,之后每次需要更新的时候替换掉原来的jar包,然后重启容器即可。当我使用docker logs -f <容器名>查看容器日志时,发现需要遍历原来所有的日志,对于运行了很长时间的容器来说,光是遍历就要花很长时间,虽然可以用 --tail 100 只查看尾部100行,但是日志越来越大肯定会撑爆磁盘,这时我想要清除日志文件,发现使用du -sh 和 df -h 统计的结果不一致,于是搜索了下相关的信息,这篇博文介绍的非常清晰https://www.linuxidc.com/Linux/2018-03/151600.htm

    1、du统计的原理

    (1)如果统计目录下挂载了其他文件系统,那么也会对这个文件系统进行统计。

    (2)如果文件被删除,即使被其他进程引用了,du命令也无法对其统计。因为stat命令找不到这个文件。

    (3)可以跨分区统计某些你想统计的文件大小总和。因为它们都能被stat找到并统计。

    2、df统计的原理

    (1)当某个文件系统下挂载了其他分区,df不会把这个分区也统计进去。

    (2)由于df每次统计都是读取superblock,所以df对文件系统中的某个文件进行统计时,会自动转为统计这个文件系统的信息。

    (3)df会统计已删除但却仍有进程引用的文件。

    从以上原理可以看出,du统计的结果并不总是比df小,因为du会统计目录下的挂载文件,而df不会。然而du不会
    统计已经被删除但仍然被进程使用的文件,而df会统计。

    针对于上述docker日志,如果不想清空日志文件,使用 echo "" > <日志文件名> 即可,因为使用rm -rf不会释放空间(docker进程仍然占用),除非重启容器。

  • 相关阅读:
    ZJU_1145 OR POJ_1100 Dreisam Equations
    数据结构基础之队列
    The New Villa
    Mission Impossible 6
    数据结构基础之栈
    POJ_1185_炮兵阵地 dp+状态压缩
    (转载)Dig命令的用法
    (转载)服务发现系统etcd介绍
    golang 导入包
    1.4方程求根之弦截法
  • 原文地址:https://www.cnblogs.com/tian874540961/p/12024744.html
Copyright © 2011-2022 走看看