du 显示奇怪的文件大小,似乎遵循一些尴尬的大小计数规则

du 显示奇怪的文件大小,似乎遵循一些尴尬的大小计数规则

我在 CentOS 7 虚拟机上遇到了一些我无法向自己解释的问题。

我正在观察一个以大约 100KBps 的速度增长的日志文件。

我有一个watch调用du,但输出始终是 2 的幂,如以下控制台捕获所示:

Every 2s: 
du -k out.log
Sat Jan  4 14:26:25 2020

2097088 out.log

因此,以 KB 或 MB 为单位显示大小或控制台中任何更改的大小都会让我满意,例如常规的 15M、16M、17M... 等等。我只是想看到文件增长。单位并不重要。

但我得到的是例如 16M、32M、64M、...256M、512M...没有中间步骤。每次值更改时,都会经过前一次时间的两倍,因为文件必须增长两倍才能使更改可见。

如果我使用-b没有问题,我会看到大小每 2 秒增长一次。

我在手册页中进行了搜索,例如这个但我不明白为什么我看不到使用该选项的“真正的进展” -k

我确信我错过了文档中的某些内容,但我不知道是什么。

感谢大家对这个社区的时间和投入。

编辑

再次运行此命令watch du -k out.log

  • 4(调用时的第一个值)
  • (等待 2 秒)24
  • (等待约 1 分钟)28

当时,日志填充缓慢 - 大约约 100 字节/秒,因此每个 KByte 都应该可见......

  • (8 秒)32
  • (12 秒)36
  • (12秒) 40
  • (12 秒)44
  • (10 秒)52
  • (12 秒)60

直到那里,我注意到现在显示的大小是 4K 的倍数,这可能是 HDD 集群大小。我可以理解文件大小可以“以块大小”显示。

  • (30秒后)192

如果我可以说的话,文件的向tail -f我显示日志正在“正常运行”,并且其大小不断增长。

此时已经过去了 10 多分钟,日志源从一开始就相当稳定。

  • (12 分钟)448 = 64x7
  • (9 分钟)960 = 64x15
  • (20 分钟)1984 = 64x31

现在的值似乎是 64K x ((2 的 pow 倍数) -1)

  • (24 分钟,现在记录更多内容)传递到 1284 ???什么 ???注意:这不是 64K 的倍数
  • (2 分钟)2304 = 64x36
  • (5 分钟)1820 ???注意:不是 64K 的倍数

尾部显示文件在增长,没有奇怪的事情......到底发生了什么?

  • (2 分钟)3840 = 64x60
  • 进程结束
  • (2 分钟)2940 ???不是 64 的倍数

要么是我除夕夜喝多了,但事实并非如此。要么这一切中有什么非常特别的东西,我真的很想知道那里发生了什么。

相关内容