在linux上以编程方式触发inotify事件

在linux上以编程方式触发inotify事件,linux,virtualbox,inotify,Linux,Virtualbox,Inotify,当主机操作系统上的文件发生更改时,在VirtualBox(或几乎任何VM)上使用共享文件夹不会在来宾操作系统上触发inotify事件 但是如果可以通过编程方式触发inotify事件,那么我可以编写一个东西(virtualbox插件、客户机/服务器等)来告诉linux(在本例中是Ubuntu)文件已更改。这将允许任何监视文件更改的现有软件(ruby的guard、python的watchdog、NodeWatcher等)使用共享文件夹并提高开发速度 语言并不重要(但考虑到跨主机操作系统安装的方便性,

当主机操作系统上的文件发生更改时,在VirtualBox(或几乎任何VM)上使用共享文件夹不会在来宾操作系统上触发inotify事件

但是如果可以通过编程方式触发inotify事件,那么我可以编写一个东西(virtualbox插件、客户机/服务器等)来告诉linux(在本例中是Ubuntu)文件已更改。这将允许任何监视文件更改的现有软件(ruby的guard、python的watchdog、NodeWatcher等)使用共享文件夹并提高开发速度

语言并不重要(但考虑到跨主机操作系统安装的方便性,我们更喜欢node)。如果有人知道如何完成,我将不胜感激

sed '' -i filename

此命令触发inotify更改事件,但不会更改文件的内容

如果您所追求的是不可能的(idk),您可以尝试在计时器上进行轮询-因此,假设每10秒列出目录中的内容并手动比较修改日期的戳记。感谢您的想法,但请注意,watcher,etc已经为这种情况内置了轮询功能。轮询的问题是,在大型项目上,轮询占用大量cpu,速度可能非常慢。显然,问题是,来宾vm上安装了virtualbox工具/驱动程序,对吗?谢谢@SnakeDoc,但inotify事件不会在共享驱动器上触发。这里是virtualbox的解释。在任何情况下,你都无法做到这一点。唯一的解决方案是在主机上运行侦听器,将活动转发给来宾,并点击您正在使用的任何软件(例如:guard)。但是你必须为每个软件写这个。如果你能以编程方式触发一个inotify,那么这些软件就可以正常工作,不需要为每一个你想使用的软件编写插件。4年后。下面是我对nodejs的每个操作请求所做的。在主机/服务器chokidar上运行目录监视+tcp套接字,在文件更改时推送。在客户机/来宾机上,在同一端口上运行tcp套接字并侦听。然后,通过配置文件或解析/etc/mtab,使用下面的答案在本地文件路径上触发inotify。