【问题标题】:Inotify linux watching subdirectoriesInotify linux 看子目录
【发布时间】:2017-12-06 11:42:03
【问题描述】:

是否可以以这种模式查看目录 /storage/data/usernames/Download/ -> /storage/data/*/Download/ 我需要查看是否在每个用户的下载文件夹中进行了更改。也许我需要创建所有路径的列表,将其放入数组中,并在每个文件夹上循环启动 inotify 进程,但这对系统来说可能很重。

【问题讨论】:

  • 您想要inotifywait 并将其设置在父级上,它可以递归地监视您指定的任何更改(例如创建、修改、删除等)。它将输出在该目录结构中更改的文件的名称。如果您有两个不属于相关层次结构的目录(例如父/子),则设置两个监视。
  • 问题是我需要跳过除每个用户主目录中的下载目录之外的所有其他文件夹。
  • 它不必是递归的,你可以指定一堆不同的目录来观看。您甚至可以在一个文件中列出要监视的文件并使用--fromfile <file> 选项(每行一个文件/目录)初始化监视,因此一个监视可以覆盖所有主目录。它需要由具有足够读取权限的用户运行(如果您想在主目录中下降,则执行)。
  • 文件夹是动态创建的,这就是为什么我想跳过用户名部分并查看所有名称为 Download 的文件夹。
  • 感谢您对 --fromfile 选项的提示,我想我会运行脚本来获取所有路径并将它们保存在列表文件中并使用此选项进行监控。

标签: linux bash monitoring inotify


【解决方案1】:

是的,这很容易实现。

文件夹是动态创建的,这就是我想跳过用户名的原因 部分并查看名称为 Download 的所有文件夹。

fluffy 是适合它的工具。

  1. 打开终端:1,运行fluffy
  2. 在另一个终端:2,fluffyctl -W /storage/data/*/Download
  3. 您必须能够在终端:1 上看到调用 fluffy 的事件。
  4. 当你添加一个新用户但不想重新执行fluffy更新路径时,添加新用户后再次运行相同的watch命令fluffyctl -W /storage/data/*/Download;选择具有相同设置/选择的新用户目录。如果您删除了任何用户,不必费心,fluffy 会自行负责释放资源。

适用于您的用例的命令:

目录内容-

root@six-k:/opt# ls /opt/*/d1
/opt/d1/d1:
fd1

/opt/dd2/d1:
fd1

/opt/dd3/d1:

调用fluffy -

root@six-k:/home/lab/fluffy# fluffy

控制/管理蓬松 -

root@six-k:/opt# fluffyctl -W /opt/*/d1

事件-

root@six-k:/home/lab/fluffy# fluffy

event:  ACCESS, ISDIR, 
path:   /opt/d1/d1

event:  CLOSE_NOWRITE, ISDIR, 
path:   /opt/d1/d1

event:  ACCESS, ISDIR, 
path:   /opt/dd2/d1

event:  CLOSE_NOWRITE, ISDIR, 
path:   /opt/dd2/d1

event:  ACCESS, ISDIR, 
path:   /opt/dd3/d1

event:  CLOSE_NOWRITE, ISDIR, 
path:   /opt/dd3/d1

注意: inotifywait 不优雅,它有问题并报告错误的事件路径。我不想在这里查看inotifytools,但是如果您想知道它有什么问题,请查看目录树并在其中执行重命名/移动。稍后在该重命名目录上执行ls,查看它报告的路径!

【讨论】:

  • 你是fluffy的创建者吗?这可能应该在答案中注明。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-22
  • 2017-01-10
  • 1970-01-01
  • 2023-03-26
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多