Lösung 1:
Das hängt von deiner Distribution ab. Auf einigen Systemen wird es nur beim Booten gelöscht, auf anderen laufen Cronjobs, die Elemente löschen, die älter als n sind Stunden.
- Unter Ubuntu 14:mit
tmpreaper
die von/etc/cron.daily
aufgerufen wird , konfiguriert über/etc/default/rcS
und/etc/tmpreaper.conf
. (Dank an diese Antwort). - Unter Ubuntu 16:mit
tmpfiles.d
. (Dank an diese Antwort). - Auf anderen Debian-ähnlichen Systemen:beim Booten (die Regeln sind in
/etc/default/rcS
definiert ). - Auf RedHat-ähnlichen Systemen:nach Alter (RHEL6 war es
/etc/cron.daily/tmpwatch
; RHEL7/RHEL8 und RedHat-ähnlich mit systemd ist es in/usr/lib/tmpfiles.d/tmp.conf
konfiguriert , aufgerufen vonsystemd-tmpfiles-clean.service
). - Auf Gentoo
/etc/conf.d/bootmisc
.
Lösung 2:
Unter CentOS (und ich nehme an, Fedora) gibt es einen Job in /etc/cron.daily namens tmpwatch
. Dies führt /usr/sbin/tmpwatch
aus , wodurch Dateien gelöscht werden, auf die in der angegebenen Anzahl von Stunden nicht zugegriffen wurde, d. h. das Standardverhalten besteht darin, atime
zu untersuchen damit die Datei auswerten kann, ob sie kürzlich verwendet wurde.
http://linux.die.net/man/8/tmpwatch
Andere Distributionen (und Installationen) haben möglicherweise /tmp als tmpfs gemountet, was ein In-Memory-Dateisystem ist. Dies wird beim Booten gelöscht.
Lösung 3:
Unter Ubuntu 11.10, das ich verwende, gibt es ein Upstart-Skript in /etc/init/mounted-tmp.conf
. Der Anfang davon sagt Folgendes:
# mounted-tmp - Clean /tmp directory
#
# Cleans up the /tmp directory when it does not exist as a temporary
# filesystem.
description "Clean /tmp directory"
start on (mounted MOUNTPOINT=/tmp) or (mounted MOUNTPOINT=/usr)
Genaueres kannst du aber im Allgemeinen /tmp
nachlesen wird bereinigt, wenn es entweder gemountet oder /usr
ist montiert. Dies passiert regelmäßig beim Booten, also /tmp
Die Reinigung wird bei jedem Start ausgeführt.
In /etc/default/rcS
Sie haben TMPTIME
set, das im obigen Init-Skript verwendet wird, um die beiden find
zu füttern Befehle an seinem Ende - steuert im Grunde das Löschen von Dateien basierend auf ihren Zeiten (geändert, geändert, zugegriffen).
Lösung 4:
Ab Fedora 18 /tmp
ist auf tmpfs
gemountet (d. h. RAM) standardmäßig und wird daher beim Ausschalten gelöscht.
Dieses Verhalten kann durch Ausgabe von systemctl mask tmp.mount
deaktiviert werden und neu starten (und durch Ausgabe von systemctl unmask tmp.mount
wieder aktiviert und Neustart) und dann /tmp
wird auf /
montiert Dateisystem und kann durch /usr/lib/tmpfiles.d/tmp.conf
gesteuert werden Einstellungen.
Siehe http://fedoraproject.org/wiki/Features/tmp-on-tmpfs und man tmpfiles.d
für weitere Einzelheiten zu jedem Fall.
Lösung 5:
Unter RHEL 6.2 werden die Dateien in /tmp von tmpwatch gelöscht, wenn 10 Tage lang nicht auf sie zugegriffen wurde.
Die Datei /etc/cron.daily/tmpwatch definiert, wie tmpwatch aufgerufen wird.
#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
-X '/tmp/hsperfdata_*' 10d /tmp
Die Argumente -x sind auszuschließende Dateien. Das vorletzte Argument ist die Wartezeit nach der letzten Zugriffszeit. Das letzte Argument ist das zu untersuchende Verzeichnis.