Salut à tous
J'essaie de comprendre une question et j'ai eu hier était juste en espérant que vous me donner votre avis à ce sujet. Je crois que j'ai résolu le problème, mais je sens encore l'ignorance au sujet de certaines parties du comportement je pouvais l'expérience dans le scénario suivant. Ici, c'est la situation (ancienne version simplifiée du 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
Le contenu de la INPUT_DIR figurent un grand nombre de fichiers, et il a signalé l'erreur ci-dessus sur l'un d'eux (SOURCE \u003d 1, END_RCD \u003d 0). Toutefois, le dossier a été ok, autant que j'ai pu voir. Je me suis rapidement assuré mes commandes ont été correctes et même de re-dirigé le script sur l'ensemble du dossier pour obtenir une liste finale ok comme un résultat, ce regardé bizarre à première vue.
Après un certain temps de l'enquête, j'ai finalement trouvé que j'avais un tas de n processus s'exécutant en arrière-plan demandant que peu de code. En dépit de cela, je l'origine, ce script ne serait courir une fois dans le même temps, de sorte que les fichiers de mon processus de traitement (n) de tomber dans INPUT_DIR serait mise à jour du fichier traité de sorte qu'ils n'ont pas pris en compte par le prochain appel.
Malheureusement pour ma théorie, la vérité est que le script a appelé plusieurs fois dans le même temps (à partir de différentes sessions), le traitement en parallèle, avec un fichier traité qui n'est pas unique (vous commencez à voir ce que cela peut ressembler ici ). Donc, pour résumer, le script ci-dessus a signalé une erreur lors de l'exécution sur le processus (n) pour un fichier créé par le processus (n-1).
Maintenant, la situation décrite ci-dessus devrait être ok tant que le fichier est ouvert une fois le temps, c'est juste que ce fichier est vérifié par le mal, mais le résultat reste le même. Alors, ce que je crois, est que le dossier sur lequel il a signalé l'erreur a été ouverte en deux sessions en même temps.
J'ai supprimé le fichier et maintenant TRANSFORMES exécuter ce script, une fois après avoir terminé tous les processus sont si je ne reçois plus aucune question. La seule chose que je ne comprends toujours pas pourquoi END_RCD a 0. Depuis deux sessions différentes variables tampons, je ne vois pas comment un éventuel choc sur un fichier se produire une telle erreur. Si quelqu'un ici a un crédibles

explication, je serais très heureux de le savoir.
Many thanks,
Yann