it-swarm.cn

如何克服“设备或资源繁忙”?

我尝试过了 rm -rf文件夹,并且显示“设备或资源繁忙”。

在Windows中,我将使用LockHunter来解决此问题。什么是linux等价物? (请提供一个简单的“解锁此”方法作为答案,而不提供 this 之类的完整文章。尽管它们很有用,但我目前仅对ASimpleMethodThatWorks™感兴趣)

250
ripper234

您想要的工具是lsof,它代表列出打开的文件

它有很多选项,因此请查看手册页,但是如果要查看目录下的所有打开文件:

_lsof +D /path
_

这将通过_/path_下的文件系统递归,因此请注意在大型目录树上执行此操作。

一旦知道哪些进程打开了文件,就可以退出这些应用程序,或使用kill(1)命令将其杀死。

255
camh

有时是挂载问题的结果,因此我将卸载您要删除的文件系统或目录:

umount /路径

122
kip2

我用fuser做这种事情。它将列出哪个进程正在使用安装中的一个或多个文件。

16
BillThor

解决方法如下:

  1. 进入目录并输入ls -a
  2. 您会发现.xyz文件
  3. vi .xyz并查看文件的内容
  4. ps -ef | grep username
  5. 您将在第8列(最后一行)中看到.xyz内容
  6. kill -9 job_ids-其中job_ids是第8列中相应错误导致内容的第2列的值
  7. 现在尝试删除文件夹或文件。
12
user73011

我遇到了同样的问题,以@camh建议开头构建了一个单行:

lsof +D ./ | awk '{print $2}' | tail -n +2 | xargs kill -9

awk命令获取PIDS。 tail命令摆脱了讨厌的第一项:“ PID”。我用了 -9杀死,其他人可能会有更安全的选择。

9
Choylton B. Higginbottom

我在具有NFS网络文件系统的服务器上经常遇到这种情况。我假设它与文件系统有关,因为文件通常命名为.nfs000000123089abcxyz

我的典型解决方案是重命名或移动文件的父目录,然后在一两天后再回来,该文件将被自动删除,这时我可以删除目录。

这通常发生在我要安装或编译软件库的目录中。

7
user5359531

当自动测试创建虚拟磁盘时,我遇到了这个问题。其他答案lsoffuser中建议的命令没有帮助。测试后,我尝试将其卸载,然后删除该文件夹。很久以来我一直感到困惑,因为我无法摆脱它-我一直都在“设备或资源繁忙”

我偶然发现了如何摆脱虚拟磁盘的方法。我必须卸载它的次数与运行mount命令的次数相同,即Sudo umount path

由于它是使用自动测试创建的,因此它已多次安装,因此为什么在测试后仅卸载一次就无法摆脱它。因此,在我多次手动卸载它之后,它终于又变成了常规文件夹,可以删除它。

希望这可以帮助遇到此问题的其他人!

5
gloriphobia

绕过Prabhat的上述问题,当我搁浅一个encfs进程,重新启动后,在macOS High Sierra中遇到了这个问题,但是

ps -ef | grep name-of-busy-dir

向我展示了过程和PID(第二列)。

Sudo kill -15 pid-here

固定它。

5
bil

如果您可以访问服务器,请尝试

从服务器删除该目录

或者,再次执行mountmount,请尝试umount -l:如果在正常umount上遇到任何问题,则为lazy umount。

我也有这个问题

lsof +D path:无输出

ps -ef:未提供任何相关信息

3
Prabhat Kumar Singh