Sicherungsaktion auf umount
Frage
Ich habe einige einfache Dateisysteme mit Python-Fuse geschrieben, aber jetzt möchte ich etwas tun, das ich weder im Pydoc noch in den gefundenen Beispielskripten finden kann: Wenn das Dateisystem nicht mit fusermount -u
gemountet istIch möchte diese Aktion abfangen, den Umount ausführen und dann das Mount-Verzeichnis rmdir, das vom Initialisierungsskript meines Programms erstellt wurde.Wenn es überhaupt möglich ist, wie lautet die magische Beschwörung, um die Umount-Aktion abzufangen?
Ich kann sehen, wie sich daraus leicht eine Endlosschleife entwickeln kann, aber ich kann hoffentlich herausfinden, wie die Umount-Falle beim ersten Treffer deaktiviert werden kann.
Update: Ich habe
destroy
unter http://omake.metaprl.org/prerelease gefunden/omake-dll-fuse.html#htoc582 und fügte die Methode hinzu, aber sie scheint nicht aufgerufen zu werden.
Lösung
hat es gefunden!Es ist fsdestroy () in Python-Fuse.hat es gefunden von:
jcomeau@intrepid:/usr/src/google-desktop/api$ cat /usr/lib/python2.6/dist-packages/fuseparts/* | strings | grep destroy fsdestroy
Was ich verwendet habe war:
def fsdestroy(self, data = None): syslog.syslog(syslog.LOG_INFO, 'destroy %s: %s' % (self.mountpoint, data)) os.rmdir(self.mountpoint)
Ich weiß nicht, ob der Datenparameter notwendig ist oder nicht, tut aber nicht weh.Und anscheinend heißt es nach dem Betrag, also musste ich mir keine Sorgen machen, damit umzugehen.
Andere Tipps
Eine andere Lösung, obwohl nicht spezifisch und nicht unter Python getestet, besteht darin, zu verhindern, dass FUSE mit dem -f
-Schalter "dämonisiert".
In diesem Fall wird die fuse_main
-Methode blockiert, bis das Dateisystem nicht mehr gemountet ist, und Sie erhalten die Steuerung anschließend zurück.
Wenn Sie das Deamon-Verhalten benötigen, können Sie es vor dem Mounten selbst neu implementieren.