Attendre fin création fichier
sam
-
sam -
sam -
Bonjour,
je dipose d'unordonnanceur qui detecte la création d'un fichier. Cependant même si la création du fichier est tujours en cours de part sa taille asser volumineuse, l'ordonnanceur déplace le fichier en question avant qu'il termine.
Mon idée est de lancer un script dés la création du fichier, ce script doit attendre jusqu'à ce qu'il n'y est plus d'écriture au niveau du fichier. Comment faire avec un script korn shell?
Merci d'avance.
je dipose d'unordonnanceur qui detecte la création d'un fichier. Cependant même si la création du fichier est tujours en cours de part sa taille asser volumineuse, l'ordonnanceur déplace le fichier en question avant qu'il termine.
Mon idée est de lancer un script dés la création du fichier, ce script doit attendre jusqu'à ce qu'il n'y est plus d'écriture au niveau du fichier. Comment faire avec un script korn shell?
Merci d'avance.
A voir également:
- Linux vi aller à la fin du fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
8 réponses
Salut jipicy,
cela fait un bout de temps :) mais je vois que tu es fidéle à tes principes et je te remercie d'avance pour ton aide.
Le fichier est soit crée par une application J2EE, soit reçu par un CFT. dans les deux cas, il faudrait que j'attend la fin du transfert ou la fin de création du fichier avant que je n'opère mes traitements.
L'ordonnanceur déclenche son traitement dés que le fichier est crée dans le répertoire x.
Merci d'avance.
cela fait un bout de temps :) mais je vois que tu es fidéle à tes principes et je te remercie d'avance pour ton aide.
Le fichier est soit crée par une application J2EE, soit reçu par un CFT. dans les deux cas, il faudrait que j'attend la fin du transfert ou la fin de création du fichier avant que je n'opère mes traitements.
L'ordonnanceur déclenche son traitement dés que le fichier est crée dans le répertoire x.
Merci d'avance.
Re-
Tu devrais peut être voir du côté de la commande "lsof".
Une commande du genre :
renvoie le PID du processus qui a ouvert le fichier, et rien lorsque le fichier est fermé.
Donc, avec une simple boucle qui vérifie si le fichier est ouvert devrait faire l'affaire, enfin je pense... ;-))
PS. Y'a peut être mieux et plus simple
Tu devrais peut être voir du côté de la commande "lsof".
Une commande du genre :
/usr/sbin/lsof /chemin/fichier_en_cours_de_téléchargement
renvoie le PID du processus qui a ouvert le fichier, et rien lorsque le fichier est fermé.
Donc, avec une simple boucle qui vérifie si le fichier est ouvert devrait faire l'affaire, enfin je pense... ;-))
PS. Y'a peut être mieux et plus simple
Salut,
l'ordonanceur est limité par rapport à tout ce qui est événementiel. l'évenement est déclenché dés la création du fichier indépendamment de la fin de création du fichier ou non :)
Pour la réponse de dubeck, elle n'est pas faisable dans mon scénario.
l'ordonanceur est limité par rapport à tout ce qui est événementiel. l'évenement est déclenché dés la création du fichier indépendamment de la fin de création du fichier ou non :)
Pour la réponse de dubeck, elle n'est pas faisable dans mon scénario.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ça ne marche pas.
j'ai lancé une boucle indéfinie pour la création d'un fichier et en parrallèle j'ai testé avec "lsof /rep" rep : est le répertoire contenant le fichier ouvert/en cours d'écriture et cela ne me donne aucun résultat.
j'ai lancé une boucle indéfinie pour la création d'un fichier et en parrallèle j'ai testé avec "lsof /rep" rep : est le répertoire contenant le fichier ouvert/en cours d'écriture et cela ne me donne aucun résultat.
Salut jipicy,
j'ai procéder come suit. en ligne de commande j'ai lancé une boucle indéfinie pour la création d'un fichier dans le répertoire x. avec une autre session j'ai exécuter un lsof sur le répertoire et il ne me retourne pas le pid du fichier en cours de création.
Je vais creuser d'avantage.
Bonne journée.
j'ai procéder come suit. en ligne de commande j'ai lancé une boucle indéfinie pour la création d'un fichier dans le répertoire x. avec une autre session j'ai exécuter un lsof sur le répertoire et il ne me retourne pas le pid du fichier en cours de création.
Je vais creuser d'avantage.
Bonne journée.
en surveillant le fichier pas le répertoire, ça fonctionne
$ $ for X in in $(seq 1 10) ; do date ;sleep 5;done >> /tmp/pipapou& [1] 12066 $ $ lsof -l |grep pipapou bash 12066 1000 1w REG 8,1 60 343445 /tmp/pipapou sleep 12071 1000 1w REG 8,1 60 343445 /tmp/pipapou ... $ lsof -l |grep pipapou bash 12066 1000 1w REG 8,1 330 343445 /tmp/pipapou sleep 12238 1000 1w REG 8,1 330 343445 /tmp/pipapou $ lsof -l |grep pipapou [1]+ Done for X in in $(seq 1 10); do date; sleep 5; done >> /tmp/pipapou $ lsof -l |grep pipapou $ lsof -l |grep pipapou