Hi all
Próbálom megérteni, hogy teljes mértékben egy olyan kérdés volt tegnap, és csak abban a reményben, hogy jobb lenne, ha meg a véleményedet. Azt hiszem, rögzített a probléma, de még mindig úgy érzik, tudatlan néhány részei viselkedésének tudtam tapasztalat a következő forgatókönyv szerint. Itt volt a helyzet (régi kódot egyszerűsített változat):
Kód:
for FILE in $INPUT_DIR ; do
grep -q $FILE $PROCESSED 2>&1
if [ $? != 0 ] ; then
echo $FILE >> $PROCESSED
else
continue
fi
SOURCE=`grep ^S $FILE | wc -l | awk '{print $1}'`
END_RCD=`grep ^E $FILE | wc -l | awk '{print $1}'`
if [ $SOURCE -ne $END_RCD ] ; then
echo "Error in $FILE: "$SOURCE" source keys detected, but "$END_RCD" end keys detected.
fi
done
A tartalom a INPUT_DIR is elég sok kép, és ez jelentette a fenti hiba egyikük (SOURCE \u003d 1, END_RCD \u003d 0). Ugyanakkor a fájl OK amennyire láttam. Én gyorsan biztosítani én parancsok helyes-e, és még újra futott a forgatókönyvet az egész Fájllista, hogy a végleges OK egy kimenet, így nézett ki, fura első látásra.
Miután egy ideig a vizsgálat végül megállapította, hogy volt egy csomó n futó folyamatok, a háttérben meg ezt a kis kódot. Annak ellenére, hogy az eredetileg feltételezett Ezzel ez a szkript csak akkor működik, ha ugyanabban az időben, így a fájlok feldolgozása az én folyamat (n) tartozó INPUT_DIR lenne frissítésével FELDOLGOZOTT fájlt, így nem kap fölvette a következő hívás.
Sajnos a saját elmélete, az igazság az volt, hogy a script van nevezett több alkalommal egy időben (különböző ülés), feldolgozás párhuzamosan ez a FELDOLGOZOTT fájl nem egyedi (akkor kezdődik, hogy mit is nézek ki, mint itt ). Így összefoglalni a fenti parancsfájl hiba történt, amikor fut a folyamat (n) egy file által létrehozott folyamat (n-1).
Most a fenti helyzet még az OK gombra, amíg a fájl nyitva van, ha egy ideig, csak, hogy ez a fájl lesz ellenőrizni a rossz folyamat, de az eredmény ugyanaz maradt. Szóval, mit hisz, hogy a fájl, amelyben a hibát jelentették-ben nyitották meg a két ülés ugyanabban az időben.
Van távolítani a feldolgozott fájlt, és most ez a szkript futtatása után egyszer folyamatok befejeződnek így nem lesz semmilyen probléma többé. Az egyetlen dolog, amit még mindig nem értem, miért END_RCD adta 0. Mivel a két ülés különböző változó buffers, én nem látom, hogy egy esetleges összecsapás egy fájl lenne egy ilyen hiba. Ha valaki itt van a hiteles

magyarázat, én nagyon boldog, hogy tud róla.
Sok köszönet,
Yann