【问题标题】:Why does du give different results?为什么 du 给出不同的结果?
【发布时间】:2018-03-08 09:42:53
【问题描述】:

我经常使用du 命令。最近,我用它在我的服务器的根目录中找出了5个最重的文件,我使用了以下命令:

sudo du -ah / | sort -nr | head -n 5

结果是:

1016K   /var/cache/apt/archives/fonts-dejavu-core_2.35-1_all.deb
1016K   /bin/bash
1008K   /usr/src/linux-aws-headers-4.4.0-1052/fs
1008K   /usr/src/linux-aws-headers-4.4.0-1049/fs
1004K   /var/awslogs/lib/python2.7/site-packages/botocore/data/ec2/2016-09-15/

然后我删除了 -h,并观察到了完全不同的结果:

sudo du -a / | sort -nr | head -n 5

结果:

2551396 /
1189240 /usr
894000  /var
541836  /usr/lib
406276  /var/lib

来自du的man页面,

-h, --human-readable
              print sizes in human readable format (e.g., 1K 234M 2G)

根据我的理解,包含或排除-h应该不会真正导致结果的变化,只是大小格式。

您能帮我理解为什么会发生这种情况吗?

【问题讨论】:

  • 它确实只改变尺寸格式。但是sort -nr 和head -n 5 会给你不同的线路。当你使用du -h 时,你应该使用sort -h。
  • 只需将排序中的“-n”替换为“-h”即可。应该这样做:sudo du -ah / | sort -hr | head -n 5
  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地点。

标签: linux shell command-line du


【解决方案1】:

1016K 在数值上大于2M。 sort -n 只是提取了1016 和2。

如果您的排序支持,请尝试sort -h。

【讨论】:

    【解决方案2】:

    sort 命令不考虑 K/M/G,将所有“K”排在所有“M”之前。

    【讨论】:

      【解决方案3】:

      可能-h 您的目录大小类似于2G 或4G,而文件仍为1016K 或1008K,而2 小于1016,因此目录被排序为列表的结尾。

      如果没有-h,目录的总大小(实际上是:目录树)看起来明显大于内部文件的大小,因此目录被排在列表的顶部。

      【讨论】:

        猜你喜欢
        • 2015-08-26
        • 1970-01-01
        • 2010-10-29
        • 1970-01-01
        • 2012-06-09
        • 2011-08-07
        • 2017-04-29
        • 2021-12-07
        • 2020-10-15
        相关资源
        最近更新 更多