我正在使用一些库开发一个 Web 项目,这些库强制我在每次修改一些文件时启动一个 shell 命令来编译它们。
这个任务显然很累人,我正在寻找一些脚本来处理它(我在 OSX 上)。
有没有办法在给定目录 (+subdirs) 的内容发生改变时自动启动 shell 脚本?
答案1
Mac OSX 有两个文件系统通知 API:队列和FS事件。我不知道有没有命令可以让你无需编程就可以访问它们。有一个FSEvents 的 Python 绑定。
也可以看看在 Mac OS X 上实时查看文件系统访问。
考虑到您要执行的操作,您可能需要尝试不同的方法:不是在源文件被修改时触发重新编译,而是在请求编译的文件时触发重新编译(使用make
,这样如果源文件没有更改,实际上就不会重新编译任何内容)。但是,如果您必须对网站的每个请求都这样做,那么成本可能太高;请进行基准测试以找出答案。
答案2
BSD 命令等着基于kqueie的是可在 MacPorts 中使用,它提供了您所需要的一切。
wait_on 命令允许 shell 脚本访问 kqueue(3) 提供的功能。这允许脚本检测添加到目录中的文件、附加到文件的数据以及许多其他内容 - 所有这些都无需轮询。
在 Linux 中我会使用因克龙,我通知 Cron。