我们的监控脚本遇到问题。
程序流程为
- 客户将文件(.csv 格式)ftp/sftp 到“源”目录
- Bash 脚本将完成的 .csv 文件重命名为 .aaa 文件
- 另一个 Bash 脚本将“.aaa”文件移动到“destination”目录,并将该文件重命名回“.csv”
- CAMEL 正在监视“目标”目录。如果任何文件到达“目标”文件夹并且扩展名不等于“.aaa”,它将开始处理该文件。
这里第 3 步失败了。 Bash 脚本成功移动文件。但是,当将文件从“.aaa”重命名为“.csv”时,CAMEL 会获取文件并开始处理。 CAMEL 失败并出现错误“页脚不存在”。这是因为“mv”命令未完成,并且 CAMEL 在“mv”完成之前进行了处理。所以它处理了一个不完整的文件。
由于我们使用脚本,因此在使用命令时几乎没有灵 active 。我们使用Linux“mv”命令来重命名文件。
有没有办法在重命名时锁定脚本中的文件,从而阻止 CAMEL 访问它?
或者有更好的方法来处理这种情况吗?
提前感谢您的帮助。
谢谢, 马修·李居
最佳答案
第3步怎么做?
mv foo.aaa dest/foo.csv
或
mv foo.aaa dest/foo.aaa
mv dest/foo.aaa dest/foo.csv
我认为后者应该是原子的,而如果 origin 和 dest 位于不同的分区/文件系统上,则第一个是副本。
关于java - CAMEL 正在 "mv"命令完成之前处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1865054/