java - CAMEL 正在 "mv"命令完成之前处理文件

标签 java scripting mv

我们的监控脚本遇到问题。

程序流程为

  1. 客户将文件(.csv 格式)ftp/sftp 到“源”目录
  2. Bash 脚本将完成的 .csv 文件重命名为 .aaa 文件
  3. 另一个 Bash 脚本将“.aaa”文件移动到“destination”目录,并将该文件重命名回“.csv”
  4. 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/

相关文章:

java - 如何打开文件并查看它

linux - 避免碰撞,如果复制文件

linux - 使用 mv 从文件中删除前缀和后缀

java - 在java中添加循环链接方法

java - 修剪字符串中空格的最佳方法

c++ - C/C++ 的脚本语言?

bash - $* 在 bash 脚本中意味着什么?

ruby - 为什么 Mechanize 在尝试设置密码时返回 "undefined method ' 值 =' for nil:NilClass"?

linux - `mv file.sh/~` 将文件移动到哪里?

java - "PrinterException: Paper' s 可成像宽度太小 "I can see what' s 错误,但我该如何修复它?