действие предохранителя на umount

Я написал несколько простых файловых систем с помощью Python-fuse, но теперь я хочу сделать что-то, чего я не могу найти ни в pydoc, ни в образцах сценариев, которые я нашел: когда файловая система размонтирована с помощью fusermount -u, я хочу чтобы перехватить это действие, выполните размонтирование, а затем rmdir каталог монтирования, созданный сценарием инициализации моей программы. Если это вообще возможно, что за волшебное заклинание, чтобы поймать действие размонтирования?

Я вижу, как это может легко превратиться в бесконечный цикл, но, надеюсь, я смогу понять, как отключить ловушку umount при первом попадании.


Обновление: я нашел destroy на http://omake.metaprl.org/prerelease/omake-dll-fuse.html#htoc582 и добавил метод, но, похоже, он не вызывается.


person jcomeau_ictx    schedule 30.04.2011    source источник


Ответы (2)


нашел это! это fsdestroy() в Python-fuse. нашел его по:

jcomeau@intrepid:/usr/src/google-desktop/api$ cat /usr/lib/python2.6/dist-packages/fuseparts/* | strings | grep destroy
fsdestroy

Я использовал:

def fsdestroy(self, data = None):
  syslog.syslog(syslog.LOG_INFO, 'destroy %s: %s' % (self.mountpoint, data))
  os.rmdir(self.mountpoint)

Не знаю, нужен параметр данных или нет, но не помешает. И, по-видимому, он вызывается после umount, так что мне не пришлось беспокоиться об этом.

person jcomeau_ictx    schedule 30.04.2011
comment
Не работает для меня. Если я переопределяю этот метод, когда fusermount -u вызывается, содержимое метода никогда не запускается (os.rmdir не имеет никакого эффекта, и prints ничего не выводит, даже если они работают в других методах), и скрипт зависает. Я должен убить его вручную с помощью kill -KILL. у меня fuse.fuse_python_api = (0, 2) - person Suzanne Soy; 18.05.2012

Другое решение, хотя и не конкретное и не проверенное в Python, — предотвратить «демонизацию» FUSE с помощью переключателя -f.

В этом случае метод fuse_main будет блокироваться до тех пор, пока файловая система не будет размонтирована, и после этого вы получите контроль обратно.

Если вам нужно поведение демона, вы можете переопределить его перед монтированием.

person Kevin    schedule 22.09.2012