inotify 在监视单个文件时不跟踪重命名事件

inotify 在监视单个文件时不跟踪重命名事件

我用来inotifywait跟踪单个文件(而不是目录)上的事件,因为

$ inotifywait -m -e open -e close -e move myfile.txt

当我打开并编辑文件时,日志会按预期打印。

Setting up watches.
Watches established.
myfile.txt OPEN 
myfile.txt CLOSE_NOWRITE,CLOSE 

但是当我重命名文件时,inotify 永远不会发出MOVED_INMOVED_FROM事件(甚至不会DELETE_SELF)。另一方面,如果我观察目录包含myfile.txt,而不是单个文件,事件照常发出。

对我来说,一个奇怪的点是,打开和关闭重命名的文件仍然会记录事件。

myfile.txt OPEN 
myfile.txt CLOSE_NOWRITE,CLOSE 

此时,我的文件不存在,myfile.txt但有另一个名称。值得注意的是,inotify 不会跟踪与新创建的 相关的任何事件myfile.txt

我的问题是:

  1. 如何使用 正确跟踪单个文件的“重命名”事件inotifywait,而不监视完整目录?

  2. 如何获取所监视的单个文件的当前名称?--format "%f"选项似乎总是打印传递给的原始文件名,inotifywait即使文件被重命名,如上所示。

  3. 我正在寻找一种适用于文件系统中分散的一组给定文件的“重命名历史记录器”。是否有任何 inotify 的替代品可用于此特定目的?

相关内容