8

Ubuntu: TMPREAPER räumt das /tmp auf

Posted by Thorsten on 17. April 2012 in Allgemein, linux, Ubuntu, UPlanet |

Auf Distributionen wie RedHat und SuSE kommt ein Prozess „tmpwatch“ über Cron eingeplant bei der Defaultinstallation bereits mit. Der Prozess hat eine Konfiguration im /etc/cron.daily Verzeichnis und wird täglich aufgerufen. Dabei prüft er auf Dateien im /tmp Verzeichnis deren Zugriffszeit älter als 7 Tage ist und löscht die Treffer. Er räumt also kontinuierlich das /tmp Verzeichnis auf.

Bei meinem Ubuntu Server ist mir jetzt nach einiger Zeit aufgefallen das ich diverse sess_* Files (Session Files von PHP) in meinem /tmp Verzeichnis halt. Irgendwas mit 97000 Stück. Blöd, hab ich nicht drauf geachtet.

Im Ubuntu Repository habe ich ein Programm tmpreaper gefunden welches den gleichen Zweck erfüllt wie das mir bekannte tmpwatch. Es bringt eine Konfigurationsdatei /etc/tmpreaper.conf mit welche auch recht übersichtlich gestaltet ist. Außerdem trägt es sich auch ins /etc/cron.daily Verzeichnis ein und wird dadurch täglich durch cron gestartet.

Installieren könnt ihr tmpreaper über:

sudo apt-get install tmpreaper

Anschließend solltet ihr noch die Konfigurationsdatei /etc/tmpreaper.conf bearbeiten und folgende Zeile auskommentieren ansonsten läuft tmpreaper nicht automatisch los, siehe HowTo Files:

SHOWWARNING=true

Die restlichen Optionen sind auch recht gut beschrieben. Ihr müsst aber nichts weiter editieren um euer /tmp nun sauber zu halten.

Wie immer sind alle Angaben ohne Gewähr. Wenn ihr wichtige Dateien in /tmp speichert (Backups etc.) die dort eigentlich nichts zu suchen haben ist tmpreaper vielleicht keine so tolle Idee 😀

Schlagwörter: , ,

8 Comments

  • gem2012 sagt:

    Ich glaube /tmp als tmpfs-Ramdisk einzbinden, ist (meist) die bessere Entscheidung. Dazu muss der unten stehende Eintrag In die etc/fstab gemacht werden:

    tmpfs /tmp tmpfs nodev,nosuid,mode=1777 0 0

  • Thorsten sagt:

    Für Desktops/Laptops etc. stimme ich dir zu. Ich hab gelesen Fedora mountet sein tmp auch mit tmpfs.

    Bei Servern die eigentlich 24*7*365 laufen sollen sehe ich dagegen keinen Vorteil. Ich möchte diese nicht rebooten und damit würde mein /tmp auch nicht aufgeräumt. Oder wie siehst du das?

  • Shogun sagt:

    Ubuntu bringt von Haus aus einen Cron-Job zum Bereinigen der Session-Files mit. Dieser wird unter /etc/cron.d/php5 installiert. Das Programm sucht die Session-Files im Verzeichnis /var/lib/php5.

    Bei Dir scheint das Verzeichnis zum Erstellen der Session-Files auf /tmp geändert zu sein. Evtl. kannst Du den bereits bestehenden Cron-Job auf Dein Verzeichnis anpassen? Ein zusätzliches Programm ist dann nicht mehr nötig.

  • Samwell sagt:

    Habe mal in einem Konzern gearbeitet, die hatten ein Freigegebenes Lauferk in das jeder in der Firma lesen und schreiben konnte. Jedoch wurde automatisch alles gelöscht, was älter als 3Arbeitstage war. Könnte man das auch mit diesem Tool machen? Ich fand das Konzept genial.

  • Me sagt:

    Was spricht gegen ein einfaches

    find /tmp -type f -name „sess_*“ -atime +2 -exec rm {} \;

    als Cronjob? find & rm am Besten mit vollem Pfad.

  • Thorsten sagt:

    @Shogun
    Jupp, gefunden. Da auf meinem Server die session Files in /tmp landen hat der cronjob im Endeffekt im falschen Verzeichnis gesucht. Angepasst und funktioniert.
    Der Cronjob läuft standardmäßig in einem 30 Minuten Rythmus. Sogar noch kürzer als ich mit tmpreaper konfiguriert hatte.
    Ich lass tmpreaper trotzdem erstmal drauf. 🙂

    Danke Shogun

  • Thorsten sagt:

    @Samwell
    Genau für diesen Zweck existiert ja bei RedHat oder SuSE der tmpwatch welcher Dateien die 7 Tage nicht angefasst wurden weglöscht.
    Bei Ubuntu ist eine Alternative den tmpreaper zu verwenden. Die andere Alternative welche natürlich auch immer besteht beschreibt „Me“ einen Post später. Man kann sich natürlich auch seinen eigenen kleinen findbefehl basteln welcher den Job erledigt und diesen mit cron einplanen.
    Wenn alle Dateien auf ihr alter gescannt werden sollen lässt du bei „Me“´s Beispiel einfach die Option -name „sess_*“ weg und planst das in die /etc/crontab oder in deine Userbezogene Crontab ein.
    Beispiel:
    find /tmp -type f -atime +2 -exec rm -rf {} \;

    Ich würde rm -rf wählen, dann sind definitiv auch Ordner mit deren Inhalten weg. Aber ist natürlich auch „gefährlicher“. Und keine Schreibfehler einbauen 😉

    Danke @me, so geht das natürlich auch

  • […] Die Idee dazu habe ich hier gefunden: linuxvoodoo.de […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

Copyright © 2009-2017 linux-voodoo.de All rights reserved.
This site is using the Desk Mess Mirrored theme, v2.4, from BuyNowShop.com.