Ubuntu

如果 rm -rf 不能刪除中間的東西,它會繼續刪除嗎?

  • July 30, 2022

考慮一個garbage包含許多文件和目錄的目錄。如果我執行rm -rf garbage,但其中的某些文件或目錄garbage正被 OS/NFS/等佔用,那麼rm -rf它們將失敗。它會刪除其餘的嗎?還是會在第一次失敗時停止刪除?目前的作業系統是 Ubuntu 20.04,但有趣的是這種行為是標準的,還是取決於作業系統的(版本)。

rm的行為在 POSIX 中有詳細說明(另請參閱在非常大的文件夾上 rm -Rf 期間的實際步驟順序是什麼?它再現了完整的順序)。在無法刪除目前文件或不存在的所有情況下,它必須

繼續任何剩餘的文件

這意味著即使在失敗的情況下,它也會繼續刪除文件(如果可以的話)。這既適用於指定為 的參數的文件rm -rf,也適用於處理目錄時找到的文件。

請注意,在某些情況下,它會永久等待操作的結果(例如,如果它試圖刪除伺服器沒有響應的 NFS 掛載上的文件);它將最終進入不間斷睡眠(狀態D),但如果該狀態得到解決,它將繼續刪除文件。它實際上永遠不會停止刪除,直到用完要刪除的文件。

引用自:https://unix.stackexchange.com/questions/711812