28

My coworker has a desktop computer with /home shared on our file server. I have developed a Perl script for sshfs-mounting a certain directory on another SSH host which works fine on my laptop.

On his computer the script fails to dismount the sshfs at the end and leaves the mountpoint unclean. I didn't find any way to recover the mountpoint other than rebooting. After some testing I found that the difference between our setups is that his /home is on NFS. In his /tmp it works flawlessly.

After mount, during script operation everything is fine. But when killing the sshfs process it is listed as <defunc> by ps until the parent process (the Perl script) exits. When running a raw sshfs command on the shell the problem still occurs.

A ls -dl output for the mountpoint looks like this (as remembered - I have no real copy of the shell output at hand):

? 1 ? ? 4096 Feb  9 15:37 file_archive/

(only question marks for most information, at least all permission details)

The sshfs mount is still listed by mount but an unmount operation fails with error permission denied even when doing as root.

I searched Google but only found lots of comparisons between sshfs and NFS for running network filesystems. How can I do a sshfs mount/unmount in NFS directory safely?

5 Answers 5

47

You should be able to unmount the sshfs share by executing:

 fusermount -u /path/to/sshfs/share
4
  • I tried this but got permission denied. Of course an ordinary umount must fail when run as non-root user. Commented May 30, 2011 at 15:16
  • Most likely the reason you can't unmount (with any method) is because his home dir is mount from NFS where it's exported with the root_squash option. Thus, root has no authority in his home dir. You might turn off root_squash but it's probably safer to just mount somewhere else.
    – JFlo
    Commented Jan 7, 2019 at 16:28
  • 2
    I forget everytime, that umount or fusermount -u doesnt work, when the directory is used somewhere. So cd out of the directory before using fusermount -u or use lsof /my/local/mountpoint
    – MacMartin
    Commented Jan 14, 2019 at 8:49
  • Returns an error message: "fuse: bad mount point `/path/to/sshfs/share': Input/output error" Commented Oct 8, 2020 at 9:00
18

Just kill the process using pkill to and then un mount the mounted folder path.

 pkill -kill -f "sshfs" && umount /path/to/sshfs/share
2
  • Sometimes I have to do "sudo umount -f" or "sudo umount -l" instead of umount.
    – fchen
    Commented Nov 17, 2018 at 20:44
  • 3
    This returns the following error message: "umount: /path/to/sshfs/share: Transport endpoint is not connected" Commented Oct 8, 2020 at 8:59
4

This post is rather old. Currently on RHEL8, this is all that is required. There is no need to kill sshfs processes:

sudo umount <mountpoint>

0

This answer refers to Ubuntu 20.04, but in general you need two steps to properly unmount a sshfs volume: i) kill the sshfs process and ii) use sudo to unmount. Without using sudo, the system reports messages like "Device or resource busy" or "Transport endpoint is not connected", even if permissions are correct.

The instructions look like:

killall sshfs
sudo umount -l /path/to/sshfs/share
-2
sudo diskutil umount force ~/mount/

Seems like this command works in OS X.

2
  • 6
    Can you expand your answer to explain what this code does and how it addresses the problem? Unexplained code is discouraged, because it doesn't teach the solution. Thanks. from review queue
    – fixer1234
    Commented Feb 13, 2016 at 18:43
  • 1
    This is for OS X. The question asked for Linux. Commented Dec 3, 2017 at 22:51

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .