Rm

rm -rf 不是原子的嗎?

  • May 3, 2014

我剛剛發現了一個令人困惑的錯誤:

rm: cannot remove `xxx/app/cache/prod': Directory not empty

這是由以下命令引起的:

rm -rf $cache_dir/*

其中$cache_dir定義為xxx/app/cache

所以我看到它像:rm刪除cache/prod目錄中的所有內容,然後在它試圖刪除cache/prod目錄之前 - 另一個程序在其中創建了一個文件/目錄,因此導致rm失敗。

我的假設正確嗎?

ENOTEMPTY給出的錯誤消息是“目錄不為rmENOTEMPTYrmdir(2)

**注意:**為了安全起見,您可以將目錄移動/重命名為新名稱,然後執行刪除此目錄。

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