Ich habe osxfuse 3.7.1, sshfs 2.10, fuse libs 2.9.7 unter High Sierra 10.13.3 installiert.
Dinge scheinen zu funktionieren, außer dass, wenn ich ein entferntes Verzeichnis über fstab mounte, der Mountpoint nach dem Abmounten in einem Zombie-Zustand belassen wird und das einzige, was ich dann mit diesem Pfad tun kann, ist, ihn für ein sshfs-Mount wie Wurzel. Obwohl es einen seltsamen Trick gibt, mit dem ich den Mountpoint wiederherstellen kann, indem ich die Zombies in eine andere Datei übertrage (siehe unten).
Mein /etc/fstab
ist:
me@host:/home/me /Users/me/tmp/foo sshfs allow_other 0 0
Dies demonstriert das Problem (hier verwende ich diskutil umount
aber umount
und wirf in der Finder-GUI das gleiche Ergebnis aus):
Erstens mit sshfs direkt (keine Probleme):
$ cd /Users/me/tmp
$ mkdir foo
$ ls -l
drwxr-x--x 2 me staff 64B 13 Feb 20:41 foo
$ sshfs me@host:/home/me foo
$ ls foo/
# OK, contents of the distant directory.
$ diskutil umount foo
Unmount successful for foo
$ ls -l
drwxr-x--x 2 me staff 64B 13 Feb 20:41 foo
# umount really worked.
Zweitens via /etc/fstab
(führt zu einer Zombiedatei):
$ sudo cp /etc/fstab /etc/fstab.backup
$ echo "me@host:/home/me $PWD/foo sshfs allow_other 0 0" | sudo tee /etc/fstab >/dev/null
$ mount $PWD/foo
$ ls foo/
# OK, contents of the distant directory.
$ diskutil umount foo
Unmount successful for foo
Eigentlich ist jetzt foo
aber " Zombie ":
$ ls -l
dr-xr-xr-x 2 root wheel 1B 13 Feb 21:04 foo
# (Ownership/timestamp have changed.)
$ sudo chown me:staff foo
chown: foo: No such file or directory
$ sudo ls foo
ls: foo: No such file or directory
$ sudo rm foo
rm: bar: is a directory
$ sudo rmdir foo
rmdir: foo: Resource busy
$ ls /Volumes
Macintosh HD
$ sudo lsof foo
# Nothing.
Zu diesem Zeitpunkt ist der Mountpoint foo
zu einer Zombiedatei geworden und ich kann fast nicht mehr damit interagieren. Selbst wenn ich neu starte, befindet sich die Datei immer noch in ihrem problematischen Zustand.
Das Einzige, was ich tun kann, ist, es als root erneut einzuhängen:
$ mount $PWD/foo
mount_osxfuse: failed to mount /Users/me/tmp/foo@/dev/osxfuse0: Operation not permitted
$ sudo mount $PWD/foo
$ ls foo/
# OK, contents of the distant directory.
$ sudo diskutil umount foo
# (Back to the same zombie state.)
Und ich kann die Zombies in ein anderes Verzeichnis übertragen:
$ mkdir bar
$ ls -l
drwxr-x--x 2 me staff 64B 13 Feb 21:16 bar
dr-xr-xr-x 2 root wheel 1B 13 Feb 21:12 foo
$ echo "me@host:/home/me $PWD/bar sshfs allow_other 0 0" | sudo tee /etc/fstab >/dev/null
$ mount $PWD/bar
$ ls bar/
# OK, contents of the distant directory.
$ ls -l -d foo
dr-xr-xr-x 2 root wheel 1B 13 Feb 21:12 foo
$ diskutil umount bar
$ ls -l
dr-xr-xr-x 2 root wheel 1B 13 Feb 21:19 bar
drwxr-x--x 2 me staff 64B 13 Feb 20:41 foo
# After umounting bar:
# foo’s ownerships is me:staff again, bar is zombie.
Irgendwelche Ideen? Mache ich etwas falsch?
foo
ist ein "Zombie", von was wird er ausgegeben, wenn überhauptsudo lsof foo
? Gibt es ssh Prozesse an den Remote - Host ausgeführt wird (ps -ef|grep "me@host"
Es gibt eine Alternative fstab - Format , die Sie vielleicht versuchen:sshfs#me@host:/home/me /Users/me/tmp/foo fuse allow_other 0 0
./etc/fstab/
zu Ihrer Version wechseln ,/Library/Filesystems/fuse.fs/
schlägt der Befehl mount fehl, da er nicht vorhanden ist. Verwenden vonosxfuse
anstelle vonfuse
in/etc/fstab
bewirkt, dass der Befehl mount versucht zu verwenden,/Library/Filesystems/osxfuse.fs/Contents/Resources/mount_osxfuse
der sich darüber beklagt, dass "dieses Programm nicht direkt aufgerufen werden soll. Die OSXFUSE-Bibliothek ruft es auf."