sshfs device is busy
Some program is using a file in the filesystem you're trying to unmount. It could be a file opened for reading or writing, a current directory, or a few more obscure cases. It could even be due to a directory on the filesystem being a mount point.
To investigate, run lsof +f -- example
. It will tell what the process(es) are using the filesystem. Make your own judgement as to whether to make them close files, kill them, or defer the unmount operation.
I think you want a lazy unmount:
sudo umount -l example
I just had this problem and could not kill -9
the process reading from the mounted filesystem. kill -9
did not work even after fusermount -zu /mount/point
or umount -l /mount/point
(which worked). The only thing that worked was pkill -9 sshfs
.
Running Ubuntu, man fusermount
tells about a -z
option, which is documented as “lazy unmount”. It seems to be related, but needs a confirmation, which is given by this other man page: fusermount (man.he.net), which says “lazy unmount (works even if resource is still busy)”. One must use it with the -u
, the -z
option alone, will produce an error. I tried the -z
option, and can confirm it do the trick, but this precisely too much looks like a trick: what does it do exactly? Make it be unmounted automatically as soon as the directory is not busy any‑more? I don't know, not documented, so unsafe.
So here is another option, more verbose, but safer: tries to unmount until it successes, as many time as needed, in a loop.
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;
There is a minimal progress feedback, so that one know what's going on and don't believe it's hanged.
This option is acceptable from a shell script; for command line interaction, the use of the -z
option is more handy, but one must probably be aware the man page does not document it and there may be doubt about what it exactly do.