Sadece farklı bir dünyadan unix'e atlıyorum ve
while true
do
/someperlscript.pl
done
Perl betiğinin kendisinde dahili olarak dosyalar hedef konumda değiştirildiğinde çalıştırılan bir klasör / dosya izleyici vardır.
Bu ( while true
) iyi bir fikir mi? Değilse, tercih edilen sağlam yaklaşım nedir?
TIA
EDIT: Bu oldukça ilgi çekici gibi görünüyor, işte tam senaryo. Perl betiğinin kendisi bir dosya izleyici kullanarak bir dizini izler. Yeni dosyalar aldıktan sonra (rsync ile gelirler), yeni dosyaları alır ve işler. Şimdi gelen dosyalar bozuk olabilir (sormayın .. bir ahududu pi geliyor) ve bazen süreç onunla başa olmayabilir. Nedenini tam olarak bilmiyorum, çünkü henüz tüm senaryoların farkında değiliz.
AMA - işlem herhangi bir nedenle başarısız olursa, bir sonraki dosyada hataya neden olabilecek bir öncekiyle tamamen alakasız olduğundan, işlemin çalışır durumda olmasını ve bir sonraki dosyayla ilgilenmesini istiyoruz.
Genellikle ben yakalamak bir tür kullanılmış ve ASLA çöküyor böylece etrafındaki tüm kodu sarılmış olurdu. Ama perl için emin değildi.
Anladığım kadarıyla, süpervizör gibi bir şey kullanmak bunun için iyi bir yaklaşım.
inotify
ise, hedef dizininizde dosyaların değişmesini bekleyen meşgul bir döngüden kaçınmak için API'yi kontrol etmek isteyebilirsiniz .