Vagrant、共享文件夹:利用 inotify 而非 NFS

2024-04-24

我们的 Symfony2 Web 应用程序在开发模式下使用 Assetic 观察器来动态重新编译资产。

Web 应用程序在 Docker 容器中运行,该容器在 Vagrant VM (Ubuntu 12.04 Precise) 中运行。 主机是 OSX 10.9 Mavericks,它通过 NFS (v3) 共享与 VM 共享代码文件夹,并且代码通过 Docker 中的主机/来宾卷安装在容器中。

由于 inotify 似乎无法检测通过 NFSv3 的文件修改,因此观察程序以轮询模式工作,该模式可能非常慢(检测修改大约需要 1/2 分钟)。

我读到 NFSv4 符合 inotify 标准,但我没有找到任何好的资源。

有没有办法让 NFS/inotify 一起工作?


不幸的是,inotifycannot在 NFS 上工作。 inotify 的工作原理是将自身挂接到内核的 VFS(虚拟文件系统)层。每当发生修改时,inotify 都会知道它,因为修改发生在同一台机器上,因此在同一个内核中 - 这使得整个事情成为可能。

使用 NFS,修改发生在服务器上,并且通知会发送到客户端。但当发生更改时,NFS 不会通知客户端。否则,它就无法扩展。 NFS 的设计(和操作)是为了在单个服务器上拥有数千个客户端。想象一下,如果您做了一个微小的更改,服务器必须将其推送给所有客户端!

当然,你可以说“嘿,NFS协议中应该有一个订阅机制,这样客户端就可以告诉服务器他们想知道特定位置发生的变化”。好吧,NFS 是 30 年前设计的,所以请原谅他们不包括这个订阅/通知系统:-)

我不熟悉 Assetic,但也许您可以使用自定义脚本来手动监视更改,并在每次检测到更改时重新编译资产。只需遍历包含资产源的目录,跟踪关联数组中每个文件的 mtime,每次检测到新文件(或新的 mtime)时,重新编译。繁荣!

也可以看看关于 inotify 和 NFS 的另一个 SO 问题 https://stackoverflow.com/questions/4231243/inotify-with-nfs.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vagrant、共享文件夹:利用 inotify 而非 NFS 的相关文章

  • 如何在汇编语言中换行打印多个字符串

    我试图在汇编中的不同行上打印多个字符串 但使用我的代码 它只打印最后一个字符串 我对汇编语言非常陌生 所以请耐心等待 section text global start start mov edx len mov edx len1 mov
  • JFrog Artifactory 将什么令牌端点用于其 Docker 注册表?

    我正在尝试编写基本上可以执行以下操作的代码docker inspect发布到私人 JFrog Artifactory 的图像 而无需自己实际提取图像 我一直在使用一个名为在不拉取的情况下检查 Docker 镜像 https ops tips
  • 当 docker 处于分离状态或前台时,日志不会发送到 AWS Cloudwatch

    当我以交互模式运行 docker 脚本时 它可以工作 我可以在控制台和 AWS CloudWatch Logs 中查看日志 下面的 docker 脚本以交互模式运行 我添加了 awslogs 配置 以便日志进入 cloudwatch doc
  • 如何在 Linux 上调用 Python 中的内联机器代码?

    我正在尝试从 Linux 上的纯 Python 代码调用内联机器代码 为此 我将代码嵌入到字节文字中 code b x55 x89 xe5 x5d xc3 然后打电话mprotect http www kernel org doc man
  • Google PubSub 在阻止和等待消息时没有标准输出

    我正在使用这个问题底部的 Python 代码监听 Google PubSub 消息 它实际上是来自 Google 的异步拉取示例 我运行我的程序并输出到文件 python my script py tee log txt 如果我在接收消息时
  • 从 Dockerfile 写入 docker 卷不起作用

    请考虑以下 Dockerfile FROM phusion baseimage VOLUME data RUN touch data HELLO RUN ls ls data 问题 data 目录不包含 HELLO 文件 此外 任何其他写入
  • 为什么分配大块内存会失败,而重新分配小块内存却不会失败

    这段代码的结果是x指向一块大小为 100GB 的内存 include
  • 每个进程是否都存在内核堆栈?

    每个用户空间进程是否都存在一个内核堆栈和一个用户空间堆栈 如果两个堆栈都存在 那么每个用户空间进程应该有 2 个堆栈指针 对吗 在 Linux 中 每个任务 用户空间或内核线程 都有一个 8kb 或 4kb 的内核堆栈 具体取决于内核配置
  • 使用多线程的套接字服务器或文件服务器实现:概念不清楚

    请帮我理清这个概念 假设我们有一个使用线程实现的套接字端口服务器 套接字服务器侦听套接字端口 并在消息到达时创建一个线程来服务该请求 客户端代码向服务器发送给定数量的消息 该客户端代码也可以由多个用户在不同的计算机上运行 我知道客户端代码作
  • 为多个 python 应用程序重用 Docker 镜像

    我对 Docker 的整个世界都很陌生 实际上 我正在尝试为不同的 python 机器学习应用程序建立一个环境 这些应用程序应该在自己的 docker 容器中相互独立地运行 由于我并不真正理解使用基础映像并尝试扩展这些基础映像的方式 因此我
  • 使用openssl从服务器获取证书

    我正在尝试获取远程服务器的证书 然后可以将其添加到我的密钥库中并在我的 Java 应用程序中使用 一位高级开发人员 正在度假 告诉我我可以运行这个 openssl s client connect host host 9999 获取转储的原
  • 在 Unix 中,我可以在目录中运行“make”而无需先 cd 到该目录吗?

    在 Unix 中 我可以运行make在没有的目录中cd首先进入该目录 make C path to dir
  • 什么是接口标识符

    我有一台笔记本电脑 使用一个或多个网络适配器连接到我组织的网络 我正在尝试编写一个工具来持续监控每个网络的连接状态和连接质量 然而 我的网络知识有限 术语让我感到困惑 特别是查找所有网络适配器 有人建议我使用命令ifconfig它给了我所谓
  • 套接字发送并发保证

    如果我在两个进程 或两个线程 之间共享一个套接字 并且在这两个进程中我尝试发送一条阻塞的大消息 大于下划线协议缓冲区 是否可以保证这两个消息将按顺序发送 或者消息可以在内核内部交错吗 我主要对 TCP over IP 行为感兴趣 但了解它是
  • 如何重命名共享库以避免同名冲突?

    我找到了一个图书馆 libjson http sourceforge net projects libjson 我正在尝试将其构建为共享库并在项目中使用 建造很简单 修复 Makefile 错误后 SHARED 1 make install
  • 模拟用户输入以使用不同参数多次调用脚本

    我必须使用提供的脚本 该脚本在脚本运行时接受用户输入而不是参数 我无法解决这个问题 脚本的一个例子是 bin bash echo param one read one doSomething echo param two read two
  • C中的内存使用问题

    请帮忙 操作系统 Linux 其中 sleep 1000 中 此时 top 显示Linux任务 给我写了7 7 MEM使用 valgrind 未发现内存泄漏 我明白 写得正确 所有 malloc 结果都是 NULL 但是为什么这次 睡眠 我
  • Redis Docker compose无法处理RDB格式版本10

    我无法在 docker compose 文件中启动 redis 容器 我知道docker compose文件没问题 因为我的同事可以成功启动项目 我读到有一个删除 dump rdb 文件的解决方案 但我找不到它 我使用Windows机器 任
  • 从命名管道读取

    我必须实现一个 打印服务器 我有 1 个客户端文件和 1 个服务器文件 include
  • 查找当前视图的twig文件

    当我想修改当前视图中的某些内容时 我必须查看操作和控制器 DefaultController indexAction例如 转到操作函数 indexAction 并查看该操作正在渲染什么文件 有没有更快的方法来找出哪个文件 xxxx html

随机推荐

  • 使用 O(n) 运行时查找范围内的元素

    我正在尝试编写一个函数 从用户接收一个大小为 N 的数组 其值在0 gt N 1之间 如果所有值在0 gt N之间 该函数应该返回 1 1 是否存在 否则返回 0 我们可以假设用户输入的数字只是有效值 0 gt N 1之间 示例 N 5 值
  • Spring:web.xml 中的命名空间与 contextConfigLocation 初始化参数

    我正在阅读 Spring MVC 的文档 并且有一个关于 init 参数的问题 如果有必要的话 我正在使用 Spring 3 2 contextConfigLocation 和命名空间有什么区别 contextConfigLocation
  • 当还必须切换用户时使用 JSch 到 SFTP

    我在 Java 客户端中使用 JSch 连接到远程服务器并使用 SFTP 获取一些文件 以下代码对我来说运行良好 JSch ssh new JSch JSch setConfig FileTransferConstants STRICT H
  • MOTODEV 比 Android 模拟器更快吗?

    我在 VMWare 中的 Windows XP VM 中运行 Android SDK 因此 Android 模拟器需要很长时间才能启动 我最近听说了另一个模拟器 MotoDev 对于那些尝试过这两种方法的人来说 你能告诉我 MotoDev
  • android sdk eclipse,三星 Galaxy Tab 2,如何识别设备

    我正在尝试使用 eclipse 和 android sdk 在 Samsung Galaxy Tab 2 上进行开发 我已经安装了 Samsung Kies 并在我的设备上打开了 USB 调试 看起来 eclipse 不知道新的三星驱动程序
  • rspec 中的相关测试

    我编写功能测试 并且我需要进行的测试取决于之前测试的通过情况 假设我有一个按钮 可以打开一个窗口 其中有一个功能 也就是说 为了检查此功能 我需要首先检查按钮的正确操作 即打开窗口或不起作用 因此 我需要这样做 如果单击按钮时测试失败 则测
  • Odroid XU4 上的 Tensorflow 编译

    我正在尝试在 Odroid XU4 16GB eMMc Ubuntu 16 上编译 Tensorflow 尝试了完整和精简版 但出现如图所示的错误 https www dropbox com sh j86ysncze1q0eka AAB8R
  • Windows Phone 8 检测屏幕解锁

    我的 WP8 应用程序设置为在锁定屏幕下运行 因为即使屏幕锁定时它也需要继续运行 但我希望能够检测用户何时解锁屏幕 我该怎么做 手机解锁时会调用哪些方法 如果有 框架的Unobscured当用户解锁时事件将触发 它也会触发Obscured当
  • 在页面加载之前运行 JavaScript 函数(设置适当大小的背景)

    我有一个图像背景 无论用户的分辨率是多少 我都希望其内容始终可见 因此 我希望能够在一开始就在页面加载之前确定分辨率并设置适当的背景图像文件 有可能吗 您可以运行可访问 DOM 的 Javascript 函数 无需等待页面加载 的最早点是放
  • 我可以像处理表一样处理存储过程的结果吗?

    在sql server 2005中可以做这样的事情吗 WITH tmpTable AS EXEC spWhatever 或者我可以通过其他方式查询从 sp 返回的数据 谢谢 临时表 CREATE TABLE foo col1 int col
  • 当夏令时开始/结束时,自纪元以来的毫秒数会发生什么?

    自纪元以来的毫秒数表示自 1970 年以来经过的毫秒数 在夏令时结束之前的那一刻 或者当我们将时钟从 2 00 设置回 1 00 时 自纪元以来的毫秒数也会回退 或者他们继续吗 另一个问题 如果我住在美国加利福尼亚州 采用太平洋 夏令 标准
  • 任何修改后需要 CLEAN PROJECT 的未知错误

    我们一直在开发一个应用程序 已经过去几个月了 我们遇到了一些奇怪的错误 例如 以某种方式启用Instant Run阻止我们编译和测试 最近 我们遇到了以下行为 每次我们想要Run我们的应用程序来测试它 如果自上次以来有任何修改 则会弹出错误
  • Tomcat日志格式禁用IPv6格式

    以下是三个日志示例 127 0 0 1 17 Sep 2010 14 03 07 0800 GET docs logging html HTTP 1 1 200 24040 http localhost 8000 docs manager
  • 重写标准库使用的内存分配方法? [复制]

    这个问题在这里已经有答案了 是否可以覆盖 STL 分配 管理和释放内存的方式 如果可能的话 人们会怎样做呢 有没有一种方法可以将处理原始内存的代码保留在一个类或文件中 我想对我的整个程序执行此操作 以便我可以跟踪内存使用情况 时间和生命周期
  • Spring JPA 存储库接口和默认方法用例

    我目前想知道是否可以通过使用 JPA 存储库内的默认接口方法来优雅地解决特定用例 假设我们有以下实体和支持类型 public enum Status STATUS 1 STATUS 2 STATUS 3 Entity Getter from
  • 使用 CMAKE (VISUAL STUDIO) 链接调试和发布库

    已经有一个Thread https stackoverflow com q 2209929 293195这并没有真正帮助 我希望能够链接例如Foo lib for Release配置和Foo d lib for Debug配置 我怎样才能实
  • CSS - 文本阴影大小

    I am trying to get this effect As you see shadow is bigger then text How can I set size of shadow against to text like s
  • React 导入导致无法解析模块说明符“react”

    你可以说我傻 我不会认为这是针对我个人的 但我已经 3 年多没有使用 REACT 了 我的脑细胞肯定已经死了 我收到错误 localhost 1 未捕获类型错误 无法解析模块说明符 react 相对引用必须以 或 开头 我确信这与我在 Ch
  • 用于属性设置器的 Visual Studio DebuggerStepThrough

    我不想禁用 Visual Studio 对所有异常的正常处理 我正在寻找一种方法来忽略特定属性的设置者引发的异常 我知道 DebuggerNonUserCode and DebuggerStepThrough 但它们似乎不适用于属性 或更具
  • Vagrant、共享文件夹:利用 inotify 而非 NFS

    我们的 Symfony2 Web 应用程序在开发模式下使用 Assetic 观察器来动态重新编译资产 Web 应用程序在 Docker 容器中运行 该容器在 Vagrant VM Ubuntu 12 04 Precise 中运行 主机是 O