对大文件进行反跳 inotifywait

对大文件进行反跳 inotifywait

我将要部署的文件上传到远程目录中。该远程服务器有一个脚本可以监视目录中的新文件:

inotifywait --monitor --event create --format '%f' --quiet /foo

当检测到新文件时,部署过程开始。

问题是上传需要时间 - 并且文件一开始写入就会被检测到。因此,部署失败,因为它尝试使用部分文件。

有没有办法消除抖动,inotifywait以便它仅在完全创建后才报告新文件?

答案1

正如您所经历的那样,关注create事件并不是很有用:这些事件在创建文件时触发,但这并不能告诉您是否已写入任何数据,也不知道何时有数据写入。完成的向其写入数据。

您通常需要监视closeclose_write事件。从手册页:

活动

  • close_write

    监视的文件或监视目录中的文件在以可写模式打开后被关闭。这并不一定意味着该文件已被写入。

  • close_nowrite

    监视的文件或监视目录中的文件在以只读模式打开后被关闭。

  • close

    监视的文件或监视目录中的文件被关闭,无论它是如何打开的。请注意,这实际上是通过侦听 close_write 和 来实现的close_nowrite,因此收到的所有关闭事件都将作为其中之一输出,而不是 CLOSE。

相关内容