我尝试到rm -rf一个文件夹,并得到“设备或资源繁忙”。
在Windows中,我将使用LockHunter来解决此问题。什么是linux等价物?(请提供一个简单的“解锁此方法”作为答案,而不是像这样的完整文章。尽管它们很有用,但我目前仅对ASimpleMethodThatWorks™感兴趣)
rm -rf /……它将愉快地删除每个文件,包括/ bin / rm。
                我尝试到rm -rf一个文件夹,并得到“设备或资源繁忙”。
在Windows中,我将使用LockHunter来解决此问题。什么是linux等价物?(请提供一个简单的“解锁此方法”作为答案,而不是像这样的完整文章。尽管它们很有用,但我目前仅对ASimpleMethodThatWorks™感兴趣)
rm -rf /……它将愉快地删除每个文件,包括/ bin / rm。
                Answers:
您需要的工具是lsof代表打开文件列表的工具。
它有很多选项,因此请查看手册页,但是如果要查看目录下的所有打开文件:
lsof +D /path
该操作将通过下的文件系统进行递归/path,因此请注意在大型目录树上进行操作。
一旦知道哪些进程打开了文件,就可以退出这些应用程序,或使用kill(1)命令将其杀死。
/path。这是隐藏的“打开文件”的原因之一。
                    lsof似乎对我无能为力:lsof storage/logs/laravel.log什么也没退,所以也没做lsof +D storage/logs/。umount回应not mounted。
                    mount | grep <path>。这表明任何/dev/<abc>可能已安装在上<path>。使用sudo umount -lf /dev/<abc>,然后尝试将其删除<path>。为我工作。感谢@camh
                    我用fuser这种东西。它将列出哪个进程正在使用安装中的一个或多个文件。
fuser仅在要卸载文件系统时才有帮助。这里的问题是找到正在使用特定文件的文件。
                    fuser此处无济于事,因为问题在于在目录树中找到所有打开的文件。您可以告诉lsof显示所有文件和过滤器,或者使其递归;fuser没有这种模式,需要在每个文件上调用。
                    fuser作品将列出。试试看fuser /var/log/*,如果有任何日志打开,它将告诉哪些日志以及谁打开了。如果使用简单的通配符,find不管有没有,都不会起作用xargs。
                    lsof当时不在我的路上fuser,允许我找到要杀死的有问题的进程ID,因此+1+表示感谢。
                    我遇到了同样的问题,以@camh推荐开始构建了一个单行代码:
lsof +D ./ | awk '{print $2}' | tail -n +2 | xargs kill -9
该awk命令获取PIDS。该tail命令将删除讨厌的第一个条目:“ PID”。我用-9杀了,其他人可能有更安全的选择。
如果您可以访问服务器,请尝试
从服务器删除该目录
或者,执行umount并再次安装,umount -l如果遇到正常umount上的任何问题,请尝试:lazy umount。
我也有这个问题
lsof +D path :无输出
ps -ef :未提供任何相关信息