我刚刚发现一个令人困惑的错误:
rm: cannot remove `xxx/app/cache/prod': Directory not empty
这是由以下命令引起的:
rm -rf $cache_dir/*
其中$cache_dir
定义为xxx/app/cache
所以我认为它是这样的:rm
删除了 dir 中的所有内容cache/prod
,然后在尝试删除该cache/prod
目录之前 - 另一个程序在其中创建了一个文件/目录,因此导致了rm
失败。
我的假设正确吗?
答案1
给出的错误消息是“目录不为空”(ENOTEMPTY
),考虑到您的假设听起来是正确的,这是一个竞争条件,程序在rm
尝试删除该目录之前在该目录中创建了一个文件,从而给出了ENOTEMPTY
底层的预期错误rmdir(2)
。
笔记:为了安全起见,您可以将该目录移动/重命名为新名称,然后执行对此目录的删除。