Answers:
某些程序正在使用您要卸载的文件系统中的文件。它可能是为读取或写入而打开的文件,当前目录或其他一些晦涩的情况。甚至可能是由于文件系统上的目录是挂载点。
要调查,请运行lsof +f -- example
。它将告知正在使用文件系统的进程。请自行决定是否关闭文件,杀死文件或推迟卸载操作。
我认为您想要一个懒惰的卸载:
sudo umount -l example
Detach the filesystem from the filesystem hierarchy now, and cleanup all references to the filesystem *as soon as it is not busy* anymore
。因此,它将无法解决原始问题。同意@Gilles,lsof
在这里应该有所帮助。
umount -l
工作。
运行Ubuntu,将man fusermount
介绍一个-z
选项,该选项记录为“惰性卸载”。它似乎相关,但是需要确认,这是由另一个手册页给出的:fusermount(man.he.net),它说“惰性卸载(即使资源仍然很忙也可以工作)”。我们必须用它与的-u
,在-z
单独选项,会产生一个错误。我尝试了该-z
选项,并且可以确认它能解决问题,但这恰恰看起来像是一个把戏:它到底能做什么?是否在目录不再繁忙时自动将其卸载?我不知道,没有记录,所以不安全。
因此,这是另一个选择,更详细,但更安全:尝试卸载,直到成功循环执行,直到需要的次数为止。
echo -n "Unmounting...";
fusermount -u -q "$MOUNT_POINT";
OK="$?";
while [ "$OK" != "0" ]
do
sleep 1;
echo -n ".";
fusermount -u -q "$MOUNT_POINT";
OK="$?";
done
echo;
进度反馈很少,因此人们知道发生了什么并且不相信它挂了。
Shell脚本可以接受此选项。对于命令行交互,使用该-z
选项更为方便,但您可能必须知道手册页没有对此文档进行记录,并且可能对其确切功能有所怀疑。
如果您已经确保尝试“常规”卸载之前没有进程仍在使用文件系统:
fuser -vm /mount/point
和/或 lsof /mount/point
找到他们, /mount/point
了,尝试:
pkill -KILL sshfs
然后 fusermount -u /mount/point
。 当我失去网络连接并且无法卸载无响应的sshfs挂载点时,它对我有所帮助。
另外,如果您希望sshfs在失去网络连接时自动卸载,并向sshfs 通知应用程序I / O错误(以免它们被无限卡住),请使用以下命令挂载:
sshfs -o ServerAliveInterval=15 remote-srv:/remote/dir /local/mountpoint
如果没有数据交换,ssh
客户端将每15秒检查一次,是否可以从服务器获得响应。如果3次检查失败,它将断开并卸载。
ps aux | grep gvfsd-archive
。