Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
verschieben der neuesten datei verhindern
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
loemmel
Apprentice
Apprentice


Joined: 19 Aug 2003
Posts: 227
Location: switzerland

PostPosted: Fri Mar 18, 2005 1:19 pm    Post subject: verschieben der neuesten datei verhindern Reply with quote

hallo zusammen

ich bin auf der suche nach einer etwas komplizierteren datei-verschiebungs-funktion.
ich benutze für meine battlefield server (1942/vietnam) ein statistik tool (BFXplode)

Das tool ist als cron-job ausgeführt...
jetzt gibt es folgendes problem.
der battlefield-server schreibt xml-logfiles in den /logs ordner im battlefield-server-verzeichnis.. Das BFXplode-Tool liest alle 15 minuten, die logs in diesem verzeichnis heraus und erstellt eine statistik daraus. wenn ein xml-file einmal erfasst wurde, wird es in eine liste aufgenommen, und kein zweitesmal mehr aufgerufen.

da der battlefield-server jedoch das xml-file beim starten eröffnet, und dann laufend darin abspeichert, wird das logfile zu einem bestimmten zeitpunkt erfasst, und alle nachfolgenden änderungen nicht mehr. :!:

folgende lösungen sind mir dazu eingefallen (und für die realisierung der "verschiebungsfunktionen" brauche ich eure hilfe, weil ich keine ahnung habe, wie und ob das geht)

1. lösung (die ideale):
Bevor das Statistik-tool aufgerufen wird, werden alle xml-files, die nicht mehr vom server geöffnet sind in einen anderen ordner verschoben, das tool erfasst dann die logfiles in dem neuen ordner.

2. mögliche lösung:
Es werden alle logfiles, mit ausname der neuesten verschoben (das würde aber auch bedeuten, das wenn nur 1 file im logordner ist, dieses NICHT verschoben werden darf).

weis jemand, wie sowas zu bewerkstelligen währe :?:

das script sieht momentan wiefolgt aus, und führt eigentlich nur das Tool aus, also müsste man vor dem ausführen, halt eben so eine verschiebungs-funktion einbauen.
Code:
#!/bin/sh
cd /var/www/localhost/htdocs/bfexplode/
./BFXplode.sh +update +config bfxplode.cfg "$@"


danke jetzt schon für eure hilfe.

edit:
vieleicht hilfts, wenn ich einmal zeige, wie die logfiles benannt werden:
Code:
-rw-------  1 root root 63259 Mar 17 00:56 ev_14567-20050316_1017.xml
-rw-------  1 root root  7808 Mar 17 12:59 ev_14567-20050317_1145.xml
-rw-------  1 root root  2339 Mar 17 14:10 ev_14567-20050317_1259.xml
-rw-------  1 root root  7807 Mar 17 15:23 ev_14567-20050317_1410.xml
-rw-------  1 root root  2339 Mar 17 16:19 ev_14567-20050317_1523.xml
-rw-------  1 root root  2339 Mar 18 11:40 ev_14567-20050318_1130.xml

die datierung ist also auch im namen enthalten, somit kommt die letztdatierte datei am schluss. vielleicht gibts also auch eine möglichkeit, alle dateien, mit ausnahme der letzten zu verschieben??
Back to top
View user's profile Send private message
loemmel
Apprentice
Apprentice


Joined: 19 Aug 2003
Posts: 227
Location: switzerland

PostPosted: Fri Mar 18, 2005 2:12 pm    Post subject: Reply with quote

ich habe noch etwas weiteres herausgefunden,,,

in den logfiles, welche abgeschlossen sind, steht am ende des files folgender inhalt:
Code:
</bf:event>
</bf:round>
</bf:log>


in einem logfile, das noch geöffnet ist, steht folgender inhalt am ende des files:
Code:
</bf:event>


währe es nun möglich, nur die logfiles zu verschieben, welche am schluss des files, die werte der abgeschlossenen files haben?
Back to top
View user's profile Send private message
Anarcho
Advocate
Advocate


Joined: 06 Jun 2004
Posts: 2970
Location: Germany

PostPosted: Fri Mar 18, 2005 3:01 pm    Post subject: Reply with quote

OK, hier 2 Möglichkeiten:

1.

Du kannst mit dem folgen Befehl alle Dateien ohne </bf:event> am ende verschieben:

Code:
#!/bin/sh
SOMEWHERE="/tmp/"
for I in *.xml
do
    ENDE=`cat $I | tail -n 1`
    if [ "$ENDE" != "</bf:event>" ]; then
        mv $I $SOMEWHERE
    fi
done


2.

mit lsof kannst du bestimmen ob eine Datei geöffnet ist:

(emerge lsof)

Code:
#!/bin/sh
SOMEWHERE="/tmp/"
for I in *.xml
do
    OPEN=`/usr/sbin/lsof $I`
    if [ "$OPEN" == "" ]; then
        mv $I $SOMEWHERE
    fi
done



Hoffe ich konnte dir helfen!
_________________
...it's only Rock'n'Roll, but I like it!
Back to top
View user's profile Send private message
loemmel
Apprentice
Apprentice


Joined: 19 Aug 2003
Posts: 227
Location: switzerland

PostPosted: Fri Mar 18, 2005 3:45 pm    Post subject: Reply with quote

erst mal vielen dank für deine hilfe...

fast perfekt... wie müsste man die erste funktion umschreiben, damit alle dateien mit einem

</bf:log>

am ende verschoben werden?? das würde nämlich noch ein zusätzliches problem von einer anderen datei lösen, die ebenfalls nicht verschoben werden sollte.
Back to top
View user's profile Send private message
Anarcho
Advocate
Advocate


Joined: 06 Jun 2004
Posts: 2970
Location: Germany

PostPosted: Fri Mar 18, 2005 3:56 pm    Post subject: Reply with quote

Das sollte dann so aussehen:

Code:
#!/bin/sh
SOMEWHERE="/tmp/"
for I in *.xml
do
    ENDE=`cat $I | tail -n 1`
    if [ "$ENDE" == "</bf:log>" ]; then
        mv $I $SOMEWHERE
    fi
done

_________________
...it's only Rock'n'Roll, but I like it!
Back to top
View user's profile Send private message
loemmel
Apprentice
Apprentice


Joined: 19 Aug 2003
Posts: 227
Location: switzerland

PostPosted: Fri Mar 18, 2005 4:01 pm    Post subject: Reply with quote

vielen vielen dank :D

läuft jetzt alles wie es soll.
Back to top
View user's profile Send private message
Anarcho
Advocate
Advocate


Joined: 06 Jun 2004
Posts: 2970
Location: Germany

PostPosted: Fri Mar 18, 2005 4:04 pm    Post subject: Reply with quote

Gern geschehen!

Edit:
Ich depp, das cat kann man sich doch sparen...

Code:
#!/bin/sh
SOMEWHERE="/tmp/"
for I in *.xml
do
    ENDE=`tail -n 1 $I`
    if [ "$ENDE" == "</bf:log>" ]; then
        mv $I $SOMEWHERE
    fi
done

_________________
...it's only Rock'n'Roll, but I like it!
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum