【问题标题】:inotify - what is the best way to go about it?inotify - 最好的方法是什么?
【发布时间】:2015-03-17 12:08:20
【问题描述】:

我在我的 linux 服务器上有 inotify。我在网上查找了大量关于如何使用 inotify 的帖子,并找到了一个示例 c 代码,它监视目录以进行文件创建/删除。它在本地目录和 nfs 目录上都运行良好(这是我真正需要的)

现在查看有关如何使其成为始终运行的进程的选项,我看到至少根据我的理解有以下选项

  1. 我猜想尝试运行这段 c 代码并等待并且永远不要关闭它?
  2. incrond - 这显然是一个守护进程。我的 linux 服务器上似乎没有它,我有 rhel5,所以我想我需要安装它。不太清楚 incrond 的工作原理。
  3. inotify-tools - 这听起来最简单,因为它说我可以在 shell 脚本中使用命令

我还有一些问题,比如当 nfs 挂载被移除、服务器关闭等时会发生什么,inotify 会知道从它离开的地方拿起吗?!

我知道这是很多问题,但任何指示都会对我有很大帮助。提前致谢。同时,我将继续使用相同的 c 代码。

【问题讨论】:

  • 为什么要使用inotify(7)?做什么的?实际用例是什么?请编辑您的问题以改进它。

标签: linux shell filesystems nfs inotify


【解决方案1】:

我认为inotify(7) 不能可靠地与网络文件系统(NFS 或 CIFS)一起工作。

如果本地主机正在修改/写入某些 NFS 挂载系统,它可以工作(在本地主机上)。

如果某些远程客户端正在修改/写入某些 NFS 挂载系统(由本地主机挂载),它将无法工作(在本地主机上)。

因为 NFS 协议(至少我知道的那些,在 NFS4 之前)是一个 RPC 协议,远程 NFS 服务器(安装该 NFS 系统)无法向远程客户端发出信号,表明正在发生某些事情。

【讨论】:

  • 你是对的。当我触摸 nfs 服务器上的文件时它不起作用。我有一个要求,我需要在目录上侦听,每当有新文件出现时,我需要执行一个 shell 脚本,该脚本将获取文件名并生成参考消息并将其发送给应用程序,然后应用程序将拾取文件并处理它。所有这些目录都是 NFS。如果 inotify 不起作用,我还能用什么?
  • 没有什么能可靠地工作,除非它在 ​​NFS 服务器本身上运行。您可以在已挂载的 NFS 系统上在客户端上运行 find 命令,但这可能会很慢(并且不会完全可靠)
猜你喜欢
  • 2011-05-03
  • 2018-03-21
  • 2011-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-31
  • 2017-10-18
  • 2018-07-06
相关资源
最近更新 更多