![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här. |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| tftp felsökning | Bobby76 | UNIX for Dummies Frågor & Svar | 0 | 02-29-2008 09:44 |
| läsa från en fil och pass som variabler och ignorera # i filen | konark | Shell-programmering och Skript | 4 | 11-08-2007 03:55 |
| Läsa en fil och skriva filnamnet till ett param fil. | thebeginer | UNIX för avancerade & Expertanvändare | 1 | 10-05-2007 05:38 |
| Läsa filnamn från en fil och verkställande relativa fil från shell script | anushilrai | Shell-programmering och Skript | 4 | 03-10-2006 05:25 |
| Läsa specifika innehållet från en fil och lägga till det till en annan fil | dnicky | Shell-programmering och Skript | 5 | 10-04-2005 06:45 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
Felsökning: fil behandlingen konflikt?
Hej alla Jag försöker att till fullo förstå en fråga som jag hade igår och var bara hoppas du ge mig din åsikt om det. Jag tror att jag åtgärdat problemet, men jag tycker fortfarande okunniga om vissa delar av hur jag kunde uppleva i följande scenario. Här var situationen (gamla förenklad kod version): Kod:
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
Innehållet i INPUT_DIR innehöll en hel del filer, och det rapporteras ovanstående fel på en av dem (SOURCE \u003d 1, END_RCD \u003d 0). Men filen var ok så vitt jag kunde se. Jag snabbt se mina kommandon var korrekta och även nytt sprang skriptet på hela fillistan för att få en slutlig ok som en utgång, så det såg konstigt vid en första anblick. Efter en tid av undersökningen jag äntligen fann att jag hade ett gäng n processer som körs i bakgrunden kräver att kodsnutten. Trots detta jag ursprungligen tänkt skriptet bara skulle köra en gång vid samma tid, så de som behandlas i min process (n) faller i INPUT_DIR skulle uppdatera BEARBETADE fil så att de inte får tas upp vid nästa samtal. Tyvärr för min teori, sanningen var att skriptet fick kallas flera gånger samtidigt (från olika sessioner), behandling parallellt med en BEARBETADE fil som inte var unik (du börjar se vad det kan se ut så här ). Så för att sammanfatta de ovanstående script rapporterade ett fel när man kör på den process (n) för en fil som skapas av den process (n-1). Nu ovanstående situation bör ändå vara ok så länge som en fil öppnas en gång i tiden, det är bara det att denna fil får kontrolleras av fel process, men resultatet är detsamma. Så vad jag tror är att filen som den rapporterade felet öppnades i två sessioner på samma gång. Jag har tagit bort BEARBETADE fil och nu kör skriptet en gång efter alla processer är klara så jag inte får några problem längre. Det enda jag fortfarande inte förstår är varför END_RCD gav 0. Efter två möten har olika rörliga buffertar, jag kan inte se hur en eventuell konflikt om ett ärende skulle ge ett sådant fel. Om någon här har ett trovärdigt förklaring, skulle jag gärna veta om det.Tack så mycket, Yann |