【问题标题】:fuse action on umountumount 上的熔断器动作
【发布时间】:2011-04-30 07:51:35
【问题描述】:

我已经用 Python-fuse 编写了一些简单的文件系统,但现在我想做一些我在 pydoc 和我找到的示例脚本中找不到的东西:当文件系统用 @ 卸载时987654322@,我想捕获那个动作,执行 umount,然后 rmdir 由我的程序初始化脚本创建的挂载目录。如果可能的话,有什么魔法咒语可以困住 umount 动作?

我可以看到这很容易变成一个无限循环,但我希望能弄清楚如何在第一次遇到 umount 陷阱时禁用它。


更新:我在http://omake.metaprl.org/prerelease/omake-dll-fuse.html#htoc582 找到了destroy 并添加了该方法,但似乎没有调用它。

【问题讨论】:

    标签: python fuse umount


    【解决方案1】:

    找到了!它是 Python-fuse 中的 fsdestroy()。通过以下方式找到它:

    jcomeau@intrepid:/usr/src/google-desktop/api$ cat /usr/lib/python2.6/dist-packages/fuseparts/* |字符串 | grep 破坏 fsdestroy

    我用的是:

    def fsdestroy(自我,数据=无): syslog.syslog(syslog.LOG_INFO, 'destroy %s: %s' % (self.mountpoint, data)) os.rmdir(self.mountpoint)

    不知道data参数是否必要,但没有伤害。显然,它在 umount 之后被称为 ,所以我不必担心处理它。

    【讨论】:

    • 对我不起作用。如果我重写此方法,则当调用 fusermount -u 时,该方法的内容永远不会运行(os.rmdir 没有任何效果,并且即使它们在其他方法中工作,打印也不会输出任何内容),并且脚本挂起。我必须用kill -KILL 手动杀死它。我有fuse.fuse_python_api = (0, 2)
    【解决方案2】:

    另一种解决方案,虽然不是具体的,也没有在 Python 下测试过,但它是防止 FUSE 使用-f 开关“守护进程”。

    在这种情况下,fuse_main 方法将一直阻塞,直到文件系统被卸载,然后您将获得控制权。

    如果您确实需要守护程序行为,您可以在挂载之前自行重新实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-21
      • 2015-05-27
      • 1970-01-01
      • 2010-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多