Je saute juste sous Unix dans un monde différent et je voulais savoir si
while true
do
/someperlscript.pl
done
Le script perl lui-même possède en interne un observateur de dossier / fichier qui s'exécute lorsque les fichiers sont modifiés à l'emplacement cible.
Est-ce ( while true
) une bonne idée? Sinon, quelle est la meilleure approche privilégiée?
TIA
EDIT: Étant donné que cela semble avoir généré un peu d'intérêt, voici le scénario complet. Le script perl lui-même surveille un répertoire à l'aide d'un observateur de fichiers. À la réception de nouveaux fichiers (ils arrivent via rsync), il récupère le nouveau et le traite. Maintenant, les fichiers entrants peuvent être corrompus (ne demandez pas .. provenant d'un Raspberry Pi), et parfois le processus peut ne pas être en mesure de le gérer. Je ne sais pas exactement pourquoi, car nous ne connaissons pas encore tous les scénarios.
MAIS - si le processus échoue pour une raison quelconque, nous voulons qu'il soit opérationnel et traite le fichier suivant, car le fichier suivant est complètement indépendant du précédent qui pourrait avoir causé l'erreur.
Habituellement, j'aurais utilisé une sorte de fourre-tout et enveloppé tout le code autour de lui pour qu'il ne se bloque JAMAIS. Mais n'était pas sûr pour Perl.
D'après ce que j'ai compris, utiliser quelque chose comme supervord est une bonne approche pour cela.
inotify
API afin d'éviter une boucle occupée attendant que les fichiers changent dans votre répertoire cible.