2017-01-12 64 views
0

我正在下載一個大文件wget,我在後臺運行wget -bqc。我想看看有多少文件被下載,所以我在目錄跑du如何評估文件大小?

du -sh *

。 (如果有人知道,我也有興趣知道在這種情況下檢查wget進度的更好方法...)我看到下載了25 GB,但之後的幾次嘗試顯示了25 GB的相同結果。我擔心du在某種程度上干擾了下載,直到du顯示33 GB和40 GB的結果。

在搜索stackoverflow和在線時,我沒有發現在寫入文件時是否安全使用du,但我確實看到它只是一個可能有點偏離的估計。但是,7-8 GB似乎很多,特別是因爲它是一個單獨的文件,而不是目錄樹,它似乎是導致估計錯誤的原因。我很想知道它是如何對正在編寫的單個文件進行估算的,以及爲什麼我會看到這個結果。

回答

0

操作系統必須確保安全訪問。

杜不估計任何東西。內核知道文件的大小,並且當du問它時,就是它學習的內容。

如果文件在千兆字節的範圍內,報告的大小隻有這個粒度,連續的調用顯示相同的大小應該不會讓您感到意外 - 您是否期望wget獲取足夠的數據以翻轉到另一個千兆字節在你的支票之間?您可以嘗試運行du 而不使用 sh以獲得更準確的讀數。

此外wget會保存一些ram數據量,但這應該可以忽略不計。

+0

感謝您的回答!當涉及到正在寫入的文件和unix實用程序時,通常情況下是關於安全訪問的情況?例如貓,少,頭? 似乎文件下載速度接近每分鐘1 GB,稍快一些,但報告的大小從來沒有以1 GB的增量進行下載,因爲我檢查了它,但增量大約爲8 GB。 – kiliantics

+0

@kiliantics「安全訪問」是誤導性的。每個在普通文件上閱讀都是「安全的」,文件不會被觸及(除了上次訪問時間外)。這對於ls(1)和公司來說更是如此,它甚至不關心文件內容。 – linuxfan

+0

原則上可能是wget在寫入文件的獲取部分之前等待了很長時間,另一種選擇是您的傳輸速度變化很大。另一個原因是你在不同的機器上運行du,而文件被下載到nfs共享中。無論哪種方式,這裏都有一些粗略的內容。無論如何,做'du'不會影響下載。 –