我正在用wget下载一个大文件,它是我用wget -bqc在后台运行的。我想看看有多少文件被下载,所以我运行
du -sh *
在目录中。(我也想知道在这种情况下,如果有人知道的话,有更好的方法来检查wget进度……)我看到已经下载了25 GB,但后来几次尝试都显示了同样的25 GB的结果。我开始担心du以某种方式干扰了下载,直到一段时间后,du显示的结果是33 GB,随后是40 GB。
在搜索stackoverflow和在线时,我没有发现在正在写入的文件上使用du是否安全,但我确实看到这只是一个估计,可能会有一些偏差。然而,7-8 GB似乎很多,特别是因为它是单个文件,而不是目录树,这似乎是导致估计错误的原因。我很想知道它是如何对正在编写的单个文件做出这个估计的,以及为什么我会看到这个结果。
发布于 2017-01-12 14:25:56
操作系统必须保证安全访问。
du没有估计任何东西。内核知道文件的大小,当du请求它时,它就知道了。
如果文件在千兆字节的范围内,而报告的大小仅具有该粒度,则连续的调用显示相同的大小也就不足为奇了--您是否期望wget能够获取足够的数据,以便在两次检查之间转换到另一个千兆字节?您可以尝试在不使用sh的情况下运行du,以便获得更准确的读数。
此外,wget将在ram中保存一些数据量,但这应该可以忽略不计。
发布于 2019-03-18 20:51:07
du不是估算,而是汇总。但它可以访问一些文件系统内部信息,这可能会使它的输出令人惊讶。各个方面应该分开查看,因为它们太多了,无法在这里详细解释。
du总是打印出一棵(或几棵)目录树在磁盘上实际占用的大小。由于各种事实(上面给出了三个最常见的),这可能与存储在这些树中的信息的大小不同。
https://stackoverflow.com/questions/41606296
复制相似问题