【问题标题】:inotify with network server使用网络服务器通知
【发布时间】:2026-02-21 11:05:02
【问题描述】:

我原以为这会很容易,但结果并非如此。

我有一个挂载的网络服务器,上面运行着inotifywatch,正在监视一个文件夹。我希望进行此设置,以便网络上有权访问此服务器的任何人都可以将文件放入监视文件夹并让它执行脚本。不幸的是,除非文件在服务器本身上移动,否则它似乎不会触发。

有什么方法可以让inotify 以某种方式监视文件夹,如果任何文件,来自任何地方,都会触发 inotify 事件?还是我应该看看别的?

作为参考,这是我在 shell 脚本中使用的:

inotifywait -m --format '%f' -e moved_to "/mnt/server/folder/" |
while read NAME
do
     echo $NAME
done

【问题讨论】:

  • @jwpat7 未触发任何事件。我将代码更改为inotifywait -m --format '%e' "/mnt/server/folder/ 并将文件从我的机器移动到服务器监视目录,并且没有触发任何事件。然后,我将一个文件从服务器中移动到监视目录,并得到了一个moved_to 事件,正如我所期望的那样。值得注意的是,当事件触发时,我通过 SSH 移动文件。当我在服务器中从我的机器上移动一个文件(即在 Finder 中拖放)时,不会触发任何事件。
  • 如果在服务器上运行 inotifywait 时在您的计算机上拖放到监视文件夹, inotifywait 是否报告事件?

标签: bash shell inotify


【解决方案1】:

我最终在 cron 作业中设置了 rsynch,每隔几分钟从网络上复制文件夹,然后使用 inotifywatch 从那里获取新文件。

【讨论】: