Maintenant sur cette solution, elle me convient très bien et elle m'évite justement de gérer la création et la suppression de fichiers lock qui à mon sens est bien plus lourde mais peut-être pour toi plus déterministe => J'en conviens mais question de point de vue ;-)
Il n'y a pas de création de "fichiers lock" ;)
On verrouille tout simplement le fichier que tu veux transférer pour qu'il ne soit pas disponible pour une autre instance du script.
Note également que le verrou se déverrouille tout seul à la fin du sous shell.
Si tu veux traiter un fichier depuis ta console : worker filename
Depuis ton incrontab : dirname IN_CLOSE_WRITE worker $@/$#
Version "balai" : find dirname -print0 | xargs worker
Tu peux lancer tout ça en même temps sur le même répertoire, les fichiers ne seront traités qu'une fois. Et ça même si ton traitement évolue en terme de durée, ou si le système est fortement ralenti pour une raison ou une autre.
Et tout ça avec une dizaine de lignes en plus que ton traitement, pas de calculs bizarres ou d'estimation non déterministe. J'ai l'impression que tu préfères la tienne parce que tu n'es pas à l'aise avec les verrous. Fais des tests, tu verras c'est pas spécialement difficile à utiliser.
[^] # Re: changer la maniere de faire
Posté par guppy . En réponse au message J'ai une colle pour les experts shell ou système.. Évalué à 1.
Il n'y a pas de création de "fichiers lock" ;)
On verrouille tout simplement le fichier que tu veux transférer pour qu'il ne soit pas disponible pour une autre instance du script.
Note également que le verrou se déverrouille tout seul à la fin du sous shell.
Si tu veux traiter un fichier depuis ta console :
worker filenameDepuis ton incrontab :
dirname IN_CLOSE_WRITE worker $@/$#Version "balai" :
find dirname -print0 | xargs workerTu peux lancer tout ça en même temps sur le même répertoire, les fichiers ne seront traités qu'une fois. Et ça même si ton traitement évolue en terme de durée, ou si le système est fortement ralenti pour une raison ou une autre.
Et tout ça avec une dizaine de lignes en plus que ton traitement, pas de calculs bizarres ou d'estimation non déterministe. J'ai l'impression que tu préfères la tienne parce que tu n'es pas à l'aise avec les verrous. Fais des tests, tu verras c'est pas spécialement difficile à utiliser.