Właśnie wskakuję do unixa z innego świata i chciałem wiedzieć, czy
while true
do
/someperlscript.pl
done
Sam skrypt perla wewnętrznie ma moduł obserwatora folderów / plików, który jest wykonywany, gdy pliki są zmieniane w lokalizacji docelowej.
Czy to ( while true
) dobry pomysł? Jeśli nie, jakie jest preferowane solidne podejście?
TIA
EDYCJA: Ponieważ wydaje się, że wzbudziło to spore zainteresowanie, oto kompletny scenariusz. Sam skrypt perla obserwuje katalog za pomocą obserwatora plików. Po otrzymaniu nowych plików (przychodzą przez rsync), pobiera nowy i przetwarza go. Teraz przychodzące pliki mogą być uszkodzone (nie pytaj ... pochodzące z raspberry pi), a czasem proces może nie być w stanie sobie z tym poradzić. Nie wiem dokładnie dlaczego, ponieważ nie jesteśmy jeszcze świadomi wszystkich scenariuszy.
ALE - jeśli z jakiegoś powodu proces się nie powiedzie, chcemy, aby był uruchomiony i zajął się następnym plikiem, ponieważ następny plik jest całkowicie niezwiązany z poprzednim, który mógł spowodować błąd.
Zwykle używałbym jakiegoś typu catch all i owijałem wokół niego cały kod, aby NIGDY się nie zawiesił. Ale Perl nie był pewien.
Z tego, co zrozumiałem, dobrym rozwiązaniem jest użycie czegoś w rodzaju superwizora.
inotify
interfejs API, aby uniknąć zajętej pętli czekającej na zmianę plików w katalogu docelowym.