2009-12-08 17 views
0

Nous sommes confrontés à un problème dans notre script de moniteur.CAMEL traite le fichier avant la fin de la commande "mv"

Le déroulement du programme est

  1. ftp client/sftp le fichier (en format .csv) dans le répertoire "source"
  2. script Bash renomme le fichier .csv rempli à .aaa fichier
  3. Un autre script Bash déplace le fichier ".aaa" vers le répertoire "destination" et le renomme en ".csv"
  4. CAMEL surveille le répertoire "destination". Si un fichier arrive au dossier "destination" et que l'extension n'est pas égale à ".aaa", il commencera à traiter le fichier.

Ici, l'étape 3 échoue. Le script Bash déplace le fichier avec succès. Mais tout en renommant le fichier de ".aaa" en ".csv" CAMEL va chercher le fichier et commencer le traitement. CAMEL échoue avec l'erreur "le pied de page n'est pas présent". Cela est dû au fait que la commande "mv" n'était pas terminée et que CAMEL était traité avant que "mv" ne soit terminé. Donc, il a traité un fichier incomplet.

Puisque nous utilisons des scripts, nous avons peu de flexibilité dans l'utilisation des commandes. Nous utilisons la commande Linux "mv" pour renommer le fichier.

Existe-t-il un moyen de verrouiller le fichier dans les scripts tout en renommant ce qui empêchera le CAMEL d'y accéder?

Ou existe-t-il une meilleure façon de gérer ce scénario?

Appréciez l'aide à l'avance.

Merci, Mathew Liju

Répondre

1

Comment faites-vous l'étape 3?

mv foo.aaa dest/foo.csv 

ou

mv foo.aaa dest/foo.aaa 
mv dest/foo.aaa dest/foo.csv 

Ce dernier devrait être atomique, je pense, alors que la première est une copie si l'origine et dest sont sur différentes partitions/systèmes de fichiers.

0

Je ne sais pas ce qu'est CAMEL, mais je pense que vous cherchez un mécanisme de file d'attente sans verrou sur le système de fichiers. Maildir (partie de qmail) implémente une telle file d'attente de remise de courrier sans verrou. Vous pouvez également jeter un oeil tout autour inotify. En fonction de votre système d'exploitation et de votre partition, il est nécessaire d'utiliser cp, mv ou ln dans les fichiers.

0

Un bon conseil est de toujours écrire quelle version des différents produits que vous utilisez.

Quoi qu'il en soit, Camel 2.x dispose de 5 options de lecture différentes, que vous pouvez choisir pour remédier à ce problème. Et vous pouvez mettre en œuvre votre propre si vous avez des supports spéciaux tels que les personnes ayant pour commencer que la lecture des fichiers s'il y a un fichier spécial .done etc.

http://camel.apache.org/file2.html