Anzeige:
Ergebnis 1 bis 4 von 4

Thema: perl Script um dateien in der Größe zu begrenzen

  1. #1
    Registrierter Benutzer
    Registriert seit
    13.08.2009
    Beiträge
    11

    Question perl Script um dateien in der Größe zu begrenzen

    Hallo,

    ich habe mal eine Frage. Ich betreibe einen Linux Server auf dem ein (proprietärer) Dämon läuft der Logmeldungen einer Heizunssteuerung im Terminal ausgibt. Diese Meldungen hänge ich fortlaufend an eine Logdatei an. Diese Datei wird mit der Zeit sehr groß. Da ich den Server nur mit einem DOM betreibe ist Speicherplatz knapp bemessen. Eine maximale Dateigröße von 20MB würde mir völlig ausreichen. Nun habe ich mir überlegt ein perl Script zu schreiben das einmal Pro Tag überprüft ob die Logdatei über 20MB angewachsen ist. In dem fall soll das script die Datei am Anfang beschneiden so dass nur noch 10MB übrig bleiben. Dann wieder warten bis 20MB erreicht sind usw.

    Ist sowas relativ einfach machbar? Wie kann man den Zugriff auf die Logdatei synchronisieren? In dem Moment wo das perl-Script auf der Datei arbeitet dürft ja nix angehangen werden korrekt?

    Viele Grüße

  2. #2
    Registrierter Benutzer Avatar von Molaf
    Registriert seit
    15.11.2004
    Beiträge
    127
    Reagiert denn der Daemon auf flock? Wenn ja, dann kann man ihn solange blockieren, bis das perl-programm fertig ist.

  3. #3
    Registrierter Benutzer
    Registriert seit
    13.08.2009
    Beiträge
    11
    ich leite die Konsolenausgabe des Dämons mit dem >> Operator an die Logdatei weiter. Eventuell könnte man ja den ganzen Informationsstrom an perl übergeben anstatt direkt in die Logdatei zu schreiben. Dann könnte das Perl Script sich fortlaufend darum kümmern und dirket noch uninteressante Informationen rausfiltern. Müsste gehen oder!?

  4. #4
    Registrierter Benutzer Avatar von Molaf
    Registriert seit
    15.11.2004
    Beiträge
    127
    Ja, das müßte gehen.

    Das Perl-Skript sollte die Eingabe vorhalten, ein flock auf die Ausgabedatei setzen und erst dann Daten schreiben (mit rw-Modus).
    Ist die Dateigröße dann zu groß geworden das Dateihandle auf den Dateianfang setzen, alles einlesen, im Speicher einen Teil wegwerfen.
    Dann wieder den Handle auf den Dateianfang setzen und alles wieder schreiben, erst dann die Datei schliessen (flock geht dann verloren, ein eventuell schon wartendes Dublikat des Skripts mit neuen Daten kommt dann zum Zug).

    Die File-Handle Operation gibs in Modulen, ich hab sie aber grad nicht parat, irgendwas mit file::.*

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •