我们正在尝试编写一个脚本,以便在文件放入文件夹后立即将其移走。实现此目的的一种方法是在 cron 调度程序的脚本中运行 rsync。
这种方法的问题是系统开销。我们不能每秒运行它,如果我们在一段时间间隔后运行它,那么我们会在该时间间隔内使文件容易受到攻击(发件人可以访问)。要求是文件一到达就消失。
我检查了 stackoverflow 并发现了因克朗命令。但这仅适用于 Linux,不适用于 Solaris。
答案1
答案2
我知道您明确声明了 Solaris 10,但如果您使用的是 Solaris 11,您可以使用观察目录基于 Solaris 文件事件通知的命令。因此,与本质上基于某种轮询的任何其他解决方案相比,您可以实现接近 0% 的系统开销。此命令是一个阻塞命令,它将永远等待(或使用带超时的参数)文件夹上发生的文件事件。最典型的是,它将用于等待新文件到达。
如果你真的坚持使用 Solaris 10 那么我不知道有什么方法可以不是以某种方式基于民意调查。
还值得注意的是,从 v7 开始,Java 有一个用于监视文件系统的内置机制。该解决方案的优点在于,它会自动利用适用于相关平台的最有效方法。换句话说,您的应用程序现在可以在 Solaris 10 上运行(大概是通过 Java 使用底层的某种轮询机制),然后当您迁移到 Solaris 11 时,同一应用程序将无缝地利用底层的 Solaris 文件事件通知机制。