我如何监视特定“触发文件”的创建?

我如何监视特定“触发文件”的创建?

我需要创建一个 shell 脚本,当start在特定目录中创建调用的文件时执行应用程序。

如何编写一个 shell 脚本来等待在特定位置创建具有特定名称的文件?

答案1

如果您的系统有inotifywait(大多数 Linux 发行版、OpenBSD 以及可能的其他发行版),正如其他人提到的,占用资源最少的方法是使用inotifywait

rm -f yourdirectory/start
while [ "$(inotifywait -e create -q --format %f yourdirectory)" != "start" ]; do :; done
yourcommand

这将确保start从 中删除该文件yourdirectory,然后等待其创建,然后运行yourcommand​​。-e create指定我们只对创建事件感兴趣,-q指定我们不需要inotifywait的诊断消息,并--format %f指定我们只想在输出中查看创建的文件的名称。

如果您没有inotifywait,以下操作也将起作用,最多延迟一秒:

rm -f yourdirectory/start
while [ ! -e yourdirectory/start ]; do sleep 1; done
yourcommand

答案2

我喜欢使用“inoticoming”工具来监视目录的更改。具有日志记录和 pid 文件创建功能。您可以使用附加的“操作选项”来运行更改命令,这非常不错:)

我还记得一个名为“fileschanged”的工具,但从未使用过它,可能值得一看。 -杰伊

相关内容