我正在使用fswatch监视目录并在将视频文件复制到该目录时运行脚本:
fswatch -o /Path/To/Directory/Directory | xargs -n 1 sh /Path/To/Script/Script.sh
问题是在执行脚本之前,文件通常没有完成其副本。这些文件是不同大小的视频文件。小文件没问题,大文件没有。
如何在文件完成复制之前延迟fswatch通知?
答案 0 :(得分:2)
首先,fswatch
"监视"的行为。是特定于操作系统的:当询问有关fswatch
的问题时,您最好指定您使用的操作系统。
但是,仅使用fswatch
无法做到这一点。进程可以打开文件进行写入并使其保持打开一段足够长的时间,以便OS发送多个事件。我担心fswatch
无能为力。
另一种方法可能是使用另一种工具来检查修改后的文件当前是否打开:如果不是,则运行脚本,否则跳过它并等待下一个事件。这些工具是特定于操作系统的:在OS X和Linux中,您可以使用lsof
。请注意,此方法不会保护您免受另一个进程的影响,而正在运行。