PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : file check



myjaeger
08.11.2004, 14:50
Hallo,

ich benötige ein Script (evtl. in Perl) das auf verschiedenen Plattformen (SUN, AIX, HP, ...) prüft, ob eine Datei fertig erstellt wurde.
Ich habe mir gedacht, dass das Script solange in einer Schleife läuft, bis die Datei fertig erstellt ist.

Mein Problem besteht darin, das ich keinen Befehl bzw. keine Funktion kenne, die die Prüfung der Datei auf den verschieden Plattformen übernimmt. ?(

Hat jemand eine Idee???

Viele Grüße, myjaeger

rup
08.11.2004, 16:59
So in etwa sollte es gehen. Unter Sun und Linux funzt's.

Gruss Rupert



#!/usr/bin/perl -w

$DATEI="meineDatei.txt";

while(1){
if(defined($f=(stat($DATEI))[7])){
if($f >= 1024){ # Wenn Datei groesser 1kb
print "OK Die Datei hat jetzt die erwartete Groesse\n";
exit(0);
}
print "$DATEI gibt es ist aber erst $f Byte gross\n";
}else{
print "$DATEI gibt es noch nicht\n";
}
sleep(1);
}

myjaeger
08.11.2004, 17:39
leider weiß ich nicht wie groß die Datei werden soll.
Ich muss die Datei solange prüfen, bis sich die Größe nicht mehr ändert.

rup
08.11.2004, 22:23
Woher weisst du dass sich die Datei nicht mehr aendert? Was ist das fuer eine Datei? Wie schnell wird sie erzeugt? ....

myjaeger
09.11.2004, 09:42
es handelt sich um eine Protokolldatei.
Wenn die Datei fetig erstellt ist, hat sie einen Endesatz (immer der gleiche).

Ich habe mir gedacht, ich prüfe die Datei solange, bis sich "nichts mehr tut" und dann schaue ich, ob der der Endesatz vorhanden ist.
Es kann auch vorkommen das die Datei fertig übertragen ist, aber kein Endesatz geschrieben wurde, in diesem Fall liegt ein Fehler vor.