lösche Logfile nach 14 Tage

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von flugopa, 16.01.2007.

  1. #1 flugopa, 16.01.2007
    flugopa

    flugopa Der lernwillige

    Dabei seit:
    27.05.2006
    Beiträge:
    739
    Zustimmungen:
    0
    Ort:
    München
    Hallo,

    auch mein Linux produziert sehr viele Logfiles.
    Gibt es evtl. ein fertiges Skript welche die Logfiles nach X Tagen löscht?
    Ich habe kein gefunden, weshalb ich hier schon mal anfange ein neues Skript zu schreiben.

    #!/bin/sh
    TAG=$(date +%d)
    MONAT=$(date +%m)
    JAHR=$(date +%Y)

    echo -e "\nKontrollausgabe\t$TAG.$MONAT.$JAHR"

    ls -al | grep $MONAT+1 | rm ????

    Wer möchte helfen?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 damager, 16.01.2007
    damager

    damager Moderator

    Dabei seit:
    27.08.2003
    Beiträge:
    3.065
    Zustimmungen:
    0
    Ort:
    Munich
  4. #3 flugopa, 16.01.2007
    flugopa

    flugopa Der lernwillige

    Dabei seit:
    27.05.2006
    Beiträge:
    739
    Zustimmungen:
    0
    Ort:
    München
    Du hast sicherlich Recht, aber ich habe mich sicherlich nicht ausreichend artikuliert.

    Beispiel:

    wir nehmen das Verz. "/var/log/" indem sich sehr viele Logdateien befinden (auch U-Verz.).
    Ich möchte alle Dateien die älter als 7 Tage sind löschen.
    Logrotate bietet keine Löschfunktion mit an.
    Man könnte doch auch ein Cronjob alle 7 Tage aufrufen:

    crontab -e
    0 23 * * * /TOOLs/clear7.sh
    :wq

    clear7.sh
    #!/bin/sh

    1. AKTUELLE_ZEIT=$(date +%s)
    2. letzte Filemodifikation (FM_ZEIT) auslesen. Keine Ahnung wie ich das machen soll.
    3. if [ $FM_ZEIT < $AKTUELLE_ZEIT - 7 ]; then

    (2 + 3 muss natürlich irgendwie verknüpft werden)

    Wer hat noch eine Idee?
     
  5. #4 Wolfgang, 16.01.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Ich wette, dass du dir die Manpage zu logrotate nicht durchgelesen hast.
    Sonst wär so ein schlaues Kerlchen wie du darauf gestoßen. ;)

    Als reiner cronjob, könntest du auch eine simples find mit -exec rm ausführen.
    Allerdings ist das nicht sicher, wenn z.B. programme zum Zeitpunkt gerade auf diese Dateien zugreift.

    Deshalb überlass das lieber logrotate.

    Gruß Wolfgang
     
  6. #5 flugopa, 16.01.2007
    flugopa

    flugopa Der lernwillige

    Dabei seit:
    27.05.2006
    Beiträge:
    739
    Zustimmungen:
    0
    Ort:
    München
    > Ich wette, dass du dir die Manpage zu logrotate nicht durchgelesen hast.
    Du hast Recht.

    > Sonst wär so ein schlaues Kerlchen wie du darauf gestoßen. ;)
    Danke für die Blumen, aber so schlau bin ich nicht, weshalb ich immer Fragen muss.

    > Als reiner cronjob, könntest du auch eine simples find mit -exec rm
    > ausführen. Allerdings ist das nicht sicher, wenn z.B. programme zum
    > Zeitpunkt gerade auf diese Dateien zugreift.
    Das ist ein guter Hinweis.

    > Deshalb überlass das lieber logrotate.
    OK.

    Mir geht es auch um andere Verz. und Dateitypen, die ich ebenfalls mit einer Rotation (bist du älter als X Tage) löschen möchte.

    Wäre echt stark von Dir, wenn du etwas von deinen Wissen anderen geben könntest.
     
  7. #6 Wolfgang, 16.01.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Ich gebe mein bescheidenes Wissen gern weiter, wenn es konkrete Fragen zu einem Problem gibt - mit dem sich der Fragesteller selbst auseinandersetzt.
    Schließlich ist es ja nur sinnvoll, wenn das Problem durch eigenes erlerntes Wissen gelöst wird.
    ;)
    Wer mag schon die gleiche Frage mehrfach beantworten...

    Also zu find :
    Wenn du z.B. alle Dateien die älter als 7 Tage sind (ctime) haben willst, um sie an einen Löschbefehl zu verfüttern:
    Code:
    find /path -tape f -ctime +7 
    willst du die nun löschen, solltest du vorsichtshalber xargs verwenden, wenn es sehr viele sind.
    Sonst bekommst du u.U. Argumentlist to long... als Fehler.
    Du kannst natürlich auch gleich loslöschen auf eigene Gefahr!
    Wir löschen alle Dateien die auf log enden und älter als 7 Tage sind.
    Code:
    find /path -type f -name *log -ctime +7 -exec rm -f {} \;
    Sei dir bewusst, dass das mit Sonderzeichen im Dateinamen nicht funktionieren wird.
    Auch wenn es sehr viele Dateien sind, wird es nicht gehen.

    siehe
    man find
    man xargs

    Soviel zum fröhlichen Weitergeben meines bescheidenen Wissens zur Selbsthilfe.

    Übrigens kannst du bei Logrotate jegliche Dateien angeben, die du willst.

    Gruß Wolfgang
     
  8. #7 flugopa, 17.01.2007
    flugopa

    flugopa Der lernwillige

    Dabei seit:
    27.05.2006
    Beiträge:
    739
    Zustimmungen:
    0
    Ort:
    München
    Danke schön.


    Für andere Anfänger hier meine Crontab zur selbständigen Systempflege:

    crontab -e
    * 1 * * * /usr/bin/find /etc/samba -name *log -ctime +7 | /usr/bin/xargs rm -f $1
    5 1 * * * /usr/bin/find /var/log -name * -ctime +7 | /usr/bin/xargs rm -f $1
     
  9. #8 damager, 17.01.2007
    damager

    damager Moderator

    Dabei seit:
    27.08.2003
    Beiträge:
    3.065
    Zustimmungen:
    0
    Ort:
    Munich
    trotzdem bin ich immernoch der meinung dass das logrotate sauberer macht als "nur" zu löschen :oldman
    den einwand dazu hat ja Wolfgang schon geschildert...
     
  10. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  11. #9 Wolfgang, 17.01.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Genau so ist es.
    Wenn du das schon so machst, beschränk dich bei find wenigstens auf die archivierten logs.
    Die crontab ist für Neulinge so nicht empfehlenswert.

    Gruß Wolfgang
     
  12. #10 flugopa, 17.01.2007
    flugopa

    flugopa Der lernwillige

    Dabei seit:
    27.05.2006
    Beiträge:
    739
    Zustimmungen:
    0
    Ort:
    München
    Ich bin ein Anfänger und nehme erstmal Sachen die ich kenne, aber lasse mich sehr gern auf neue Möglichkeiten ein. Leider sehe ich manchmal den Wald vor lauter Bäume nicht.

    Wie sieht denn Dein logrotate -Script aus?
    Mein Script hat eine Macke. Wenn ich die Zahl auf über 30 setze, ohoh.

    Verwende derzeit FC6 (ZOD)
     
Thema:

lösche Logfile nach 14 Tage

Die Seite wird geladen...

lösche Logfile nach 14 Tage - Ähnliche Themen

  1. 32-Bit als Standard in Wine // Wine komplett löschen

    32-Bit als Standard in Wine // Wine komplett löschen: Hallo, soweit ich das verstanden habe installiert man Windows-Programme unter Wine bei einem 64-Bit-Linux standardmäßig auch als 64-Bit-Prpgramm....
  2. Wie kann ich das RAM löschen?

    Wie kann ich das RAM löschen?: Wie kann ich das RAM löschen? Danke im Vorraus
  3. Löschen mit Wildcard wenn Space im Pfad ist?

    Löschen mit Wildcard wenn Space im Pfad ist?: Hallo zusammen weder rm "/var/lib/vmware/Virtual Machines/Virtual Machine/"*.lck -R noch rm "/var/lib/vmware/Virtual...
  4. Dateien ab einer bestimmten Zeile löschen

    Dateien ab einer bestimmten Zeile löschen: Hallo, ich habe ein Skript geschrieben, welches mir mehrere Dateien in eine einzige Datei zusammenführt. Die einzelnen Dateien enthalten aber...
  5. Gruppe mitsamt allen Usern löschen?

    Gruppe mitsamt allen Usern löschen?: Guten Abend allerseits, hier kommt mein erstes Posting. Vielleicht kurz vorweg: Ich habe mehrere erfolglose Versuche hinter mit mich mit Linux...