【问题标题】:how to check for activity or lack thereof on a unix file directory using perl or unix commands如何使用 perl 或 unix 命令检查 unix 文件目录上的活动或缺少活动
【发布时间】:2011-07-12 10:47:37
【问题描述】:

场景: 例如,我有一个过程,其中许多文件被 Host1、Host2、Host3、Host4 复制(scp'd)到 DestinationServer。转到相同的公共目录:DestinationServer:/home/target。所有文件都是唯一的,因此不会覆盖任何文件。 Host1-Host4 将有一个 cronjob,它将启动他们的 scp 脚本到 DestinationServer。需要注意的是,主机位于不同的时区、位置。因此,它们将在不同的时间完成。

需要: 由于文件被 scp'd 到 Destination:/home/target,以编程方式检查来自其他主机的那些 scp 何时完成的最佳方法是什么??

选项: 如果可能,我的选择是在 perl 或 shell 中以编程方式执行此操作。

我要查找什么,我可以使用哪些 unix 命令或 perl 模块来帮助确定进程何时完成?任何想法,例子都会很棒!谢谢。

【问题讨论】:

    标签: perl shell unix


    【解决方案1】:

    使用Maildir 类型的方法:将所有文件复制到临时目录,然后在传输完成后让原始主机通过 ssh 重命名到目标目录。这样当一个文件出现在目标目录中时,你就知道它是完整的。

    我建议这样做,因为如果您只是将文件 scp 到目标目录并以任何方式监视该目录,您将无法区分完整传输与中断的 scp 命令或网络故障。

    【讨论】:

      【解决方案2】:

      【讨论】:

      • File::ChangeNotify 是最好的 FS 观察者。 -1 因为单独使用观察者会遇到 Jouni 指出的问题。
      【解决方案3】:

      与 Jouni 类似但可替代的方法是使用信号量文件。在 scp-ing 文件发起主机放置信号量文件之前,完成后,将其删除。所以你知道,是时候了。

      【讨论】:

      • 取决于您的实现和需求。您可以从目录中询问(例如使用 scp)“*.sem”,如果您有 sem 文件,则为时过早,文件还在。
      猜你喜欢
      • 1970-01-01
      • 2018-09-07
      • 2013-06-26
      • 1970-01-01
      • 2015-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-15
      相关资源
      最近更新 更多