Rm
du 無法訪問文件 - 沒有此類文件或目錄錯誤
我在特定文件夾中有很多子文件夾,而這些子文件夾又包含許多較小的文件。它們是以程式方式創建的,所以我不知道裡面有多少。
我決定刪除所有這些子文件夾和文件,所以我發出了命令,
rm -rf foldername/
但是, rm 命令需要很長時間才能執行,我認為這是完全正常的,因為它必須取消連結所有文件。
但是,我決定通過發出命令來檢查這個文件夾的大小是否變小了,
du -sh foldername/
但是,上面的命令給了我錯誤,
du: cannot access `foldername/file': No such file or directory
為什麼會發生此錯誤?
du
,就像任何遞歸遍歷目錄樹的命令一樣,以以下方式執行:
- 讀取有關文件的資訊,通過其路徑訪問¹。在 的情況下
du
,系統呼叫stat
提供文件類型(特別是,是否是目錄)和大小。最初,名稱取自命令行。- 如果文件是目錄,打開它並讀取文件名列表。
- 對於目錄中的每個文件名,構造一個文件路徑(
*DIRECTORY*/*ENTRY_NAME*
rm
正在執行並一一刪除文件。有時,du
在第 2 步中讀取文件名,但在第 3 步處理它時,rm
已將其刪除。您是否看到此錯誤以及看到多少次取決於 和 的相對速度,rm
並且du
幾乎是不可預測的。¹ 直接訪問文件只有兩種方式:通過路徑(包括目錄資訊,相對或絕對),或(如果文件已打開)通過描述符。