当给定目录的内容发生更改时,如何自动启动 shell 脚本

当给定目录的内容发生更改时,如何自动启动 shell 脚本

我正在使用一些库开发一个 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。

答案3

警卫- 是一个跨平台的强大工具,用于监视目录(而不仅仅是文件)并在添加、修改或删除文件时运行命令。

它处理大量的与监视文件相关的问题,包括特定于 OSX 的问题和一般文件/目录监视问题。

它的设置和运行也很简单,它使用用于观看文件的库。

答案4

截至 2023 年,我建议查看样本或者警卫,它们都可以在多个平台上运行。

相关内容