Ich hatte den Eindruck, dass "alte" Dateien in /tmp
regelmäßigen Abständen gelöscht werden. Es scheint mir jedoch, dass /tmp
nur so lange wachsen wird, wie es will, und nichts wird gelöscht. Einige Leute sagen, es ist besser, in /tmp
Ruhe zu lassen und den Inhalt nur dann zu löschen, wenn die Festplatte voll ist.
Meine Frage ist, ist /tmp
wirklich darauf ausgelegt, sich nicht um sich selbst zu kümmern? Was sind die Best Practices?
/tmp
wird es nach dem Neustart gesäubert, dies hängt jedoch vom dort gemounteten Dateisystem ab. Wasdf -h
heißt das?Antworten:
Um die Fragen zu beantworten:
/tmp
automatisch geleert werden: Ja/tmp
regelmäßig und manuell löschen? Nein , Ihr System wird sich darum kümmern.Wenn Sie sich fragen dürfen:
/tmp
irgendeinem Grund löschen (Speicherplatz benötigen, Spuren entfernen möchten, etc.): Es kommt darauf an , weiterzulesen .Der Dateisystem-Hierarchie-Standard (FHS) lautet :
/var/tmp/
hat einen ähnlichen Zweck , darf aber beim Neustart nicht gelöscht werden.Es wird nicht garantiert, dass
/tmp/
oder/var/tmp/
regelmäßig gereinigt werden. Dies kann von Ihrer Distribution und Ihren Einstellungen abhängen, obwohl die meisten Systeme von Zeit zu Zeit eine Bereinigung durchführen. Siehe Kommentar vonmike
.Wenn Sie eine Datei in / tmp löschen müssen, prüfen Sie zuerst, ob die Datei verwendet wird. Das geht ganz einfach mit:
Wenn Sie dazu berechtigt sind, wird der Prozess angezeigt, der das Handle für diese Datei enthält, z. B. Prozessname, PID und Dateityp. Um wirklich alle Prozesse anzuzeigen
sudo
, müssen Sie als Benutzer root vorangehen oder ausgeführt werden .zeigt Ihnen alle Dateien
/tmp
und Verzeichnisse unten (+D
), die aktuell geöffnet sind. Natürlich sollten Sie diese Dateien nicht löschen.Wenn Sie eine noch geöffnete Datei löschen, ist der Zugriff über den Dateisystem-Namespace zwar nicht mehr möglich, sie ist jedoch für Prozesse mit einem geöffneten Datei-Handle weiterhin vorhanden. Nach dem Schließen dieses Handles kann auf die Datei für diesen Prozess nicht mehr zugegriffen werden. 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
Aufrufen überlebt , aber Programmierer sind schlampig, und Sie wissen es nie. Aus diesem Grund ist es nicht so klug , Dateien zu löschen, die noch von einigen Programmen verwendet werden.quelle
Ich denke das ist OS varientabhängig. Ich würde mir vorstellen, dass / tmp normalerweise beim Neustart gelöscht wird, und in der Tat 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 möglicherweise einen Befehl in crontab ausführen, der Dateien löscht, die älter als ein bestimmtes Alter sind. Dies kann jedoch zu Problemen führen, wenn noch verwendete Dateien gelöscht werden. Sie könnten versuchen, einen Befehl (ich habe es nicht versucht) wie
Damit werden theoretisch alle Dateien unter / tmp entfernt, die älter als 10 Tage sind.
quelle
-r
zu diesemDie Verzeichnisse / tmp und / var / tmp werden nach einem normalen Zeitplan bereinigt. Dies kann von Ihrer Distribution abhängen. Auf meinem CentOS-System (einem Klon von RedHat) ist ein Cron-Job geplant, um tmpwatch , einen tmp dir cleaner, nach einem täglichen Zeitplan auszuführen . Dateien in / var / tmp dürfen etwas länger als Dateien in / tmp / bleiben. Ich habe auch Skripte gesehen, die / tmp (aber ausdrücklich nicht / var / tmp) bei einem Neustart bereinigen, in dem Wissen, dass diese Datei durch nichts offengehalten werden kann, da alle Prozesse neu sind.
Also, ja, / tmp hat Wartung von grundlegenden Skripten. Es kann sich außerhalb dieser Wartungszeiten noch füllen. Wenn Sie Dinge manuell bereinigen möchten, sollten Sie vorsichtig sein. Sysadmin Lore spricht über Symlinks in / tmp, die auf notwendige Systemdateien verweisen, die gelöscht wurden, als n00b-Sysadmins ein einfaches
find
Skript ausführten .quelle
In CentOS gibt es einen Job
/etc/cron.daily
namens,tmpwatch
der rekursiv Dateien entfernt, auf die eine bestimmte Zeit lang nicht zugegriffen wurde. Normalerweise werden damit Verzeichnisse bereinigt, die für temporären Speicherplatz wie / tmp verwendet werden.Das ist das
/etc/cron.daily/tmpwatch
Drehbuch/tmp
Verzeichnisinhalte werden nur beim Neustart des Systems gelöscht, da der laufende Prozess möglicherweise auf Dateien in diesem Verzeichnis zugreift.quelle
Sie können den Inhalt von entfernen
/tmp/
; Das Problem dabei ist jedoch, dass bei einem Dienst, in den regelmäßig geschrieben/tmp/
und die Dateien gelöscht werden, der Dienst abstürzen oder unterbrochen werden kann, bis er neu gestartet wird.quelle
Das FHS definiert das
/tmp
Verzeichnis als "temporäre Dateien (siehe auch / var / tmp), die häufig zwischen Systemneustarts nicht erhalten bleiben" und/var/tmp
als "temporäre Dateien, die zwischen Neustarts erhalten bleiben".Heutzutage
/tmp
ist ein RAM-Dateisystem (tmpfs) standardmäßig (obwohl optional) in vielen GNU / Linux-Distributionen/tmp
praktisch nicht persistent.(Vermutlich) sollten Anwendungen ihre temporären Dateien entsprechend verwalten, was meiner Meinung nach das Löschen nach Beendigung ihrer Verwendung einschließt und keine Administratoren dazu verpflichtet, mögliche destruktive Löschvorgänge zu planen.
quelle
/tmp
wenn sie fertig sind oder wenn sie beendet werden. Es gibt jedoch weiterhin ein Problem mit Dateien, die/tmp
nach einem abnormalen Abbruch (Absturz) eines Programms noch vorhanden sind.Wenn Sie Debian (oder ein Derivat wie Ubuntu) ausführen, sollten Sie sich Ihre / etc / default / rcS- Datei ansehen und die
TMPTIME
Umgebungsvariable anpassen . Per Definition hat das, was sich in / tmp befindet, beim nächsten Neustart hier nichts zu tun.ich empfehle
TMPTIME
Variablen auf einem Serverquelle
Die Distributionen sind natürlich unterschiedlich, aber ich erwarte, dass temporäre Dateien vom System automatisch verwaltet werden. Sie würden wahrscheinlich entweder Cron-Jobs oder den systemd-tmpfiles-clean-Dienst verwenden. Wenn Sie sich Sorgen über den Speicherplatz machen, ist dies ein nützlicher Befehl, um zu prüfen, wie viel Speicherplatz jeder Stammordner belegt:
Um festzustellen, ob Ihr System den systemd-Dienst zum Verwalten temporärer Dateien verwendet, können Sie Folgendes versuchen:
Unten sehen Sie so etwas wie das Folgende, das Ihnen sagt, wann der Service das letzte Mal ausgeführt wurde:
Beachten Sie, dass dieser Dienst beendet wird, sobald die Bereinigung abgeschlossen ist. Ein Zeitgeberdienst ist dafür verantwortlich, ihn regelmäßig auszulösen. Sie können es überprüfen mit:
Und Sie sollten folgendes erwarten:
Wenn Sie sich noch einmal den eigentlichen Dienst ansehen, der für die Bereinigung der Dateien verantwortlich ist, werden Sie feststellen, dass nur Folgendes ausgeführt wird:
Sie können diesen Befehl also entweder direkt ausführen oder wie folgt vorgehen, um ihn ordnungsgemäß auszuführen:
Welches wird den entsprechenden Befehl für Ihr System ausführen. Beachten Sie jedoch, dass dies kein Befehl zum Löschen aller temporären Dateien ist. Es gibt verschiedene Konfigurationsdateien, die steuern, was und wann tatsächlich gelöscht wird, damit Anwendungen ihre temporären Dateien individuell konfigurieren können.
Ein Ort, an dem Sie nach einer generischen Behandlung von temporären Dateien suchen sollten
/usr/lib/tmpfiles.d/tmp.conf
, könnte die folgenden relevanten Zeilen enthalten:Sie können diese in eine kürzere Zeit ändern, wenn auf Ihrem System immer weniger Speicherplatz zur Verfügung steht. Beispiel:
man tmpfiles.d
Lesen Sie das Handbuch, um sicherzugehen, was Sie tun . Auch hier habe ich festgestellt, dass der hier vorgestellte Ansatz für ein CentOS- (RedHat-basiertes) und ein Ubuntu-System relevant ist, aber ich weiß nicht viel über andere Distributionen.quelle