Sto solo saltando in Unix da un mondo diverso e volevo sapere se
while true
do
/someperlscript.pl
done
Lo script perl stesso ha internamente un watcher di cartelle / file che viene eseguito quando i file vengono modificati nella posizione di destinazione.
Questa ( while true
) è una buona idea? In caso contrario, qual è un approccio robusto preferito?
TIA
EDIT: poiché questo sembra aver suscitato un discreto interesse, ecco lo scenario completo. Lo script perl stesso guarda una directory usando un watcher di file. Alla ricezione di nuovi file (arrivano tramite rsync), raccoglie il nuovo e lo elabora. Ora i file in arrivo potrebbero essere danneggiati (non chiedere .. provenienti da un raspberry pi), e talvolta il processo potrebbe non essere in grado di gestirlo. Non so esattamente perché, perché non siamo ancora a conoscenza di tutti gli scenari.
MA - se il processo fallisce per qualche motivo, vogliamo che sia attivo e funzionante e gestisca il file successivo, perché il file successivo non è completamente correlato al precedente che potrebbe aver causato l'errore.
Di solito avrei usato una sorta di catch all e racchiuso l'intero codice in modo che non si blocchi MAI. Ma non ero sicuro del perl.
Da quello che ho capito, usare qualcosa come supervisord è un buon approccio per questo.
inotify
API in modo da poter evitare un ciclo occupato in attesa che i file cambino nella directory di destinazione.