So beantworten Sie die Fragen:
- Ist
/tmp
automatisch geleert werden soll:Ja - Sollen wir Dateien in
/tmp
löschen regelmäßig und manuell:Nein , Ihr System kümmert sich darum.
Wenn Sie sich fragen dürfen:
- Kann ich Dateien aus
/tmp
löschen aus welchem Grund auch immer (Brauchen Platz, wollen Spuren entfernen etc.):Kommt darauf an , weiterlesen .
Filesystem Hierarchy Standard (FHS) besagt:
Für Programme, die temporäre Dateien benötigen, muss das Verzeichnis /tmp verfügbar gemacht werden.
Programme dürfen nicht davon ausgehen, dass Dateien oder Verzeichnisse in /tmp zwischen Aufrufen des Programms erhalten bleiben.
/var/tmp/
einen ähnlichen Zweck hat, aber darf nicht beim Neustart gelöscht werden.
Es ist nicht garantiert dass /tmp/
oder /var/tmp/
werden regelmäßig gereinigt. Dies kann von Ihrer Distribution und Ihren Einstellungen abhängen, obwohl die meisten Systeme von Zeit zu Zeit einige Aufräumarbeiten durchführen. Siehe Kommentar von mike
.
Wenn Sie eine Datei in /tmp löschen müssen , sehen Sie zuerst, ob die Datei verwendet wird. Das geht ganz einfach mit:
lsof /tmp/file_to_delete
Wenn Sie die Rechte dazu haben, wird der Prozess angezeigt, der das Handle zu dieser Datei hat, wie Prozessname, PID und Typ der Datei. Um wirklich alle Prozesse anzuzeigen, stellen Sie sudo
voran oder als Benutzer root ausführen .
lsof +D /tmp
zeigt Ihnen alle Dateien in /tmp
und Verzeichnisse darunter (+D
), die derzeit geöffnet sind. Natürlich sollten Sie diese Dateien nicht löschen.
Tatsächlich, wenn Sie eine Datei löschen, die noch geöffnet ist – wenn Sie die Rechte dazu haben – wird sie vom Dateisystem-Namensraum unzugänglich, aber sie existiert immer noch für die Prozesse, die ein offenes Datei-Handle dafür haben. Nach dem Schließen dieses Handles ist die Datei für diesen Prozess nicht mehr zugänglich, und wenn kein Prozess die Datei mehr geöffnet hat, wird sie endgültig gelöscht. Ein Prozess sollte nicht davon ausgehen, dass die Datei zwischen nachfolgenden open
überlebt Anrufe, aber Programmierer sind schlampig, und man weiß nie. Aus diesem Grund ist es nicht so clever um Dateien zu löschen, die noch von einigen Programmen verwendet werden.
Ich denke, das ist abhängig von der Betriebssystemvariante. Ich würde mir vorstellen, dass /tmp normalerweise beim Neustart gelöscht wird, und tatsächlich wäre es für das System nicht sicher, sich während der Sitzung selbst zu bereinigen, da es nicht weiß, welche Dateien aktiv sind.
Wenn Sie mutig sind, möchten Sie vielleicht einen Befehl in crontab werfen, der Dateien löscht, die älter als ein bestimmtes Alter sind, aber dies kann einige Probleme verursachen, wenn es noch verwendete Dateien löscht. Sie könnten einen Befehl (ich habe ihn nicht ausprobiert) wie
ausprobierenfind /tmp -type f -ctime +10 -exec rm {} +
Dadurch werden theoretisch alle Dateien unter /tmp entfernt, die älter als 10 Tage sind.
Die Verzeichnisse /tmp und /var/tmp werden nach einem normalen Zeitplan bereinigt. Dies kann von Ihrer Distribution abhängen. Auf meinem CentOS-System (ein Klon von RedHat) ist ein Cron-Job geplant, um tmpwatch, einen tmp-Verzeichnisreiniger, täglich auszuführen. Dateien in /var/tmp dürfen etwas länger bleiben als Dateien in /tmp/. Ich habe auch Skripte gesehen, die /tmp (aber explizit nicht /var/tmp) bei einem Neustart löschen, weil ich weiß, dass nichts diese Datei offen halten kann, da alle Prozesse neu sind.
Also, ja, /tmp wird von einfachen Skripten gewartet. Außerhalb dieser Wartungszeiten kann es immer noch aufgefüllt werden. Wenn Sie sich dafür entschieden haben, die Dinge manuell zu bereinigen, ist die beste Vorgehensweise für Systemadministratoren, vorsichtig zu sein. Sysadmin-Überlieferungen sprechen von symbolischen Links in /tmp, die auf notwendige Systemdateien verweisen, die gelöscht wurden, als n00b-Systemadministratoren einen einfachen find
ausführten Skript.