Hi alle
Ich versuche zu verstehen, ein Problem hatte ich gestern und war nur der Hoffnung, Sie geben Sie mir Ihre Meinung über sie. Ich glaube, das Problem behoben, aber ich immer noch unwissend über einige Teile des Verhaltens konnte ich Erfahrungen in den folgenden Szenario. Hier war die Situation (alte Version vereinfacht Code):
Code:
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
Der Inhalt der INPUT_DIR enthalten eine Menge von Dateien, und es berichtet über die Fehler auf einer von ihnen (SOURCE \u003d 1, END_RCD \u003d 0). Doch die Datei war ok, soweit ich sehen konnte. Ich schnell meine gewährleistet Befehle korrekt waren und auch wieder lief das Skript auf den gesamten Datei-Liste, um eine endgültige ok als Ausgang, so dass diese sich auf den ersten Blick seltsam.
Nach einiger Zeit der Untersuchung habe ich es endlich gefunden hatte, dass ich eine Menge von n-Prozesse laufen im Hintergrund fordern, dass die Bit-Code. Trotz dieses ich ursprünglich dieses Skript nur dann ausgeführt, wenn zur gleichen Zeit, so dass die bearbeiteten Dateien von meinem Prozess (n), die in INPUT_DIR wäre PROCESSED die Aktualisierung der Datei, so dass sie nicht bekommen, die von der nächsten Anrufe.
Leider für meine Theorie, die Wahrheit war, dass das Skript mehrmals genannt wurde zur gleichen Zeit (aus verschiedenen Sitzungen), die Verarbeitung parallel, das mit einem PROCESSED Datei, war nicht eindeutig (Sie beginnen, um zu sehen, was sie kann wie hier ). So zusammenfassen, das Skript einen Fehler, wenn Sie auf den Prozess (n) für eine Datei, die durch die (n-1).
Nun ist die obige Situation sollten noch ok, solange eine Datei geöffnet wird einmal eine Zeit, es ist nur, dass diese Datei von der falschen, aber das Ergebnis bleibt gleich. Also, was ich glaube ist, dass die Datei, auf dem er berichtet, der Fehler wurde in zwei Sitzungen zur gleichen Zeit.
Ich habe die PROCESSED Datei entfernt und nun dieses Skript einmal nach alle Prozesse abgeschlossen sind, damit ich nicht alle Fragen mehr. Das einzige, was ich immer noch nicht verstehen, ist der Grund, warum END_RCD gab 0. Seit zwei Sitzungen haben unterschiedliche Variable Puffer, ich sehe nicht, wie ein potentieller Konflikt auf eine Datei, die eine solche Fehlermeldung. Wenn jemand hier hat eine glaubwürdige

Erklärung, wäre ich sehr froh, zu wissen, über sie.
Vielen Dank,
Yann