我试图找到rm -rf一个文件夹,并得到“设备或资源繁忙”。
在 Windows 中,我会使用 LockHunter 来解决这个问题。什么是 linux 等价物?(请给出一个简单的“解锁此”方法作为答案,而不是像这样的完整文章。虽然它们很有用,但我目前只对 ASimpleMethodThatWorks™ 感兴趣)
cam*_*amh 327
您想要的工具是lsof,它代表list open files。
它有很多选项,因此请查看手册页,但是如果您想查看某个目录下所有打开的文件:
lsof +D /path
Run Code Online (Sandbox Code Playgroud)
这将在 下的文件系统中递归/path,因此请注意在大型目录树上执行此操作。
一旦你知道哪些进程打开了文件,你就可以退出这些应用程序,或者使用kill(1)命令杀死它们。
小智 161
有时这是挂载问题的结果,所以我会卸载您尝试删除的文件系统或目录:
卸载/路径
Bil*_*hor 17
我fuser用于这种事情。它将列出哪个进程正在使用安装中的一个或多个文件。
小智 17
这是解决方案:
ls -a.xyz文件vi .xyz 并查看文件的内容是什么ps -ef | grep usernamekill -9 job_ids - 其中job_ids为第8列对应错误导致内容的第2列值Cho*_*tom 15
我遇到了同样的问题,从@camh 推荐开始构建了一个单行:
lsof +D ./ | awk '{print $2}' | tail -n +2 | xargs -r kill -9
Run Code Online (Sandbox Code Playgroud)
awk 抓取PID。tail 摆脱讨厌的第一个条目:“PID”。xargskill -9在 PID 上执行。的-r/ --no-run-if-empty,防止kill命令失败,如果lsof没有返回任何PID。use*_*531 12
我在具有 NFS 网络文件系统的服务器上经常遇到这种情况。我假设它与文件系统有关,因为文件通常命名为.nfs000000123089abcxyz.
我的典型解决方案是重命名或移动文件的父目录,然后在一两天后回来,该文件将被自动删除,此时我可以自由删除该目录。
这通常发生在我安装或编译软件库的目录中。
小智 7
如果您可以访问服务器,请尝试
从服务器中删除该目录
或者,执行umount并再次挂载,umount -l如果在正常 umount 上遇到任何问题,请尝试:lazy umount。
我也遇到这个问题在哪里
lsof +D path: 没有输出
ps -ef: 没有提供相关信息
小智 7
从上面的 Prabhat 的问题中取笑,当我搁浅一个 encfs 进程时,我在 macos high sierra 中遇到了这个问题,重新启动解决了它,但是这个
ps -ef | grep name-of-busy-dir
Run Code Online (Sandbox Code Playgroud)
向我展示了进程和 PID(第二列)。
sudo kill -15 pid-here
Run Code Online (Sandbox Code Playgroud)
修复。
小智 5
当自动化测试创建 ramdisk 时,我遇到了这个问题。其他答案中建议的命令lsof和fuser, 没有帮助。测试后,我尝试卸载它,然后删除该文件夹。我真的很困惑多年,因为我无法摆脱它 - 我一直收到“设备或资源繁忙”!
偶然地,我发现了如何摆脱 ramdisk。我必须卸载它的次数与运行mount命令的次数相同,即
sudo umount path
由于它是使用自动化测试创建的,因此它被挂载了很多次,因此我无法通过在测试后简单地卸载一次来摆脱它。所以,在我手动卸载它很多次之后,它终于又变成了一个普通文件夹,我可以删除它。