Ubuntu
如果 rm -rf 不能刪除中間的東西,它會繼續刪除嗎?
考慮一個
garbage
包含許多文件和目錄的目錄。如果我執行rm -rf garbage
,但其中的某些文件或目錄garbage
正被 OS/NFS/等佔用,那麼rm -rf
它們將失敗。它會刪除其餘的嗎?還是會在第一次失敗時停止刪除?目前的作業系統是 Ubuntu 20.04,但有趣的是這種行為是標準的,還是取決於作業系統的(版本)。
rm
的行為在 POSIX 中有詳細說明(另請參閱在非常大的文件夾上 rm -Rf 期間的實際步驟順序是什麼?它再現了完整的順序)。在無法刪除目前文件或不存在的所有情況下,它必須繼續任何剩餘的文件
這意味著即使在失敗的情況下,它也會繼續刪除文件(如果可以的話)。這既適用於指定為 的參數的文件
rm -rf
,也適用於處理目錄時找到的文件。請注意,在某些情況下,它會永久等待操作的結果(例如,如果它試圖刪除伺服器沒有響應的 NFS 掛載上的文件);它將最終進入不間斷睡眠(狀態
D
),但如果該狀態得到解決,它將繼續刪除文件。它實際上永遠不會停止刪除,直到用完要刪除的文件。