【发布时间】:2015-12-02 04:22:59
【问题描述】:
有很多类似的问题,例如“设备或资源繁忙”。但我认为我的问题与他们不同。
我使用 mount --bind 绑定目录
mount --bind /tmp/origin /tmp/mount
然后就可以卸载成功了
umount /tmp/mount
然后如果我立即调用 rm
rm -rf /tmp/mount
我可能会收到错误Device or resource busy。如果我等待2~3秒,然后调用rm,就可以成功了。
所以这种行为在这里很奇怪。我尝试使用
lsof +D /tmp/mount
什么都看不到。
我也用fuser -vm /tmp/mount,看不到任何进程持有这个文件夹。
我比较了umount /tmp/mount 之前和umount /tmp/mount 之后的/proc/mounts。 /tmp/mount 已被删除。
我比较了umount /tmp/mount 之前和umount /tmp/mount 之后的stat /proc/mounts。 inode 也不同,这意味着/tmp/mount 已经删除完成。
即使我打电话给sync && echo 2 > /proc/sys/vm/drop_caches 并尝试删除文件缓存,它仍然不起作用。
我在 Ubuntu 14.04 和 CentOS 6.6 中都尝试过这个。他们有相同的结果。
【问题讨论】:
-
这是个好问题。我会给它一个赞成票,但它更像是一个通用的计算问题,而不是与编程相关的问题,所以它对于 StackOverflow 来说是题外话。它更适合Unix and Linux 甚至Super User。
-
谢谢。如何将这个移到那个? @AnthonyGeoghegan
-
没问题。如果我是你,我会将此问题的内容复制并粘贴到新问题中,然后删除此版本以避免新问题被标记为交叉帖子。欢迎来到 Stack Exchange!
-
因为上述命令是在代码中发生的,而不是来自 shell。这个问题的原因与调用克隆进程时的这个参数有关:CLONE_NEWNS。所以我还是把它放在这里。
-
非常感谢。去吧。
标签: linux filesystems