Frage Wann wird / tmp gelöscht?


Ich nehme verschiedene Dateien hinein /tmpund ich habe mich über die Regeln für das Löschen von ihnen Gedanken gemacht?

Ich stelle mir vor, dass es für verschiedene Distributionen anders ist, und ich bin besonders an Ubuntu- und Fedora-Desktop-Versionen interessiert.

Aber eine nette allgemeine Art, das herauszufinden, wäre eine großartige Sache.

Noch besser wäre eine nette allgemeine Art, es zu kontrollieren! (Etwas wie 'jeden Tag um 3 Uhr morgens, löschen Sie alle /tmp Dateien älter als 60 Tage, aber löschen Sie das Verzeichnis nicht beim Neustart ')


117
2018-04-06 15:09


Ursprung




Antworten:


Das hängt von Ihrer Verteilung ab. Auf einigen Systemen wird es nur gelöscht, wenn es gebootet wird, andere haben Cronjobs, die das Löschen von älteren Elementen ausführen n Std.

  • Auf Debian-ähnlichen Systemen: beim Booten (die Regeln sind definiert in /etc/default/rcS).
  • Auf RedHat-ähnlichen Systemen: nach Alter (RHEL6 war es /etc/cron.daily/tmpwatch ; RHEL7 und RedHat-like mit Systemd ist es in konfiguriert /usr/lib/tmpfiles.d/tmp.conf, angerufen von systemd-tmpfiles-clean.service).
  • Auf Gentoo /etc/conf.d/bootmisc.

130
2018-04-06 15:12



Und unabhängig davon, wann dies geschieht, ist der einzige sichere Moment in der Regel beim Booten, gleich nach dem Einhängen, da laufende Prozesse möglicherweise Dateien dort gesperrt haben und diese nicht gelöscht werden sollten. - adaptr
Es gibt auch Pakete, die sie regelmäßig entfernen können. - Samuel Edwin Ward
Auf RedHat-ähnlichen Systemen mit systemd (centos7 / rhel7) ist es in /usr/lib/tmpfiles.d/tmp.conf konfiguriert. Es wird von Systemds Ziel aufgerufen systemd-tmpfiles-clean.service. - Franklin Piat
Auf Legacy-Debian können Sie prüfen tmpreaper Paket, es ist gegabelte Version von tmpwatch. - Věroš K.


Auf CentOS (und ich vermute Fedora) gibt es einen Job in /etc/cron.daily genannt tmpwatch. Das läuft /usr/sbin/tmpwatch, die Dateien löschen wird, auf die in der angegebenen Anzahl von Stunden nicht zugegriffen wurde, d atime damit die Datei ausgewertet wird, wenn sie kürzlich verwendet wurde.

http://linux.die.net/man/8/tmpwatch

Andere Distributionen (und Installationen) können / tmp als tmpfs bereitgestellt haben, was ein speicherinternes Dateisystem ist. Dies wird beim Booten gelöscht.


23
2018-04-06 16:01



Ich habe das nicht auf CentOS 7.4. - Kevin Lemaire
@KevinLemaire Die Funktionalität wurde in einen Systemdienst verschoben. lists.centos.org/pipermail/centos/2014-October/147155.html - cjc


Unter Ubuntu 11.10, die ich benutze, gibt es ein Emporkömmling 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)

Sie können jedoch im Allgemeinen mehr lesen /tmp wird gereinigt, wenn es entweder montiert ist oder /usr montiert. Dies passiert regelmäßig beim Booten, also dies /tmp Reinigung läuft bei jedem Boot.

Im /etc/default/rcS du hast TMPTIME set, das im obigen init-Skript verwendet wird, um die beiden zu füttern find Befehle am Ende - im Grunde steuern Dateilöschung basierend auf ihren Zeiten (geändert, geändert, zugegriffen).


12
2018-04-06 15:31





Unter RHEL 6.2 werden die Dateien in / tmp von tmpwatch gelöscht, wenn auf sie nicht innerhalb von 10 Tagen zugegriffen wurde.

Die Datei /etc/cron.daily/tmpwatch definiert den Aufruf von tmpwatch.

#! /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 Dateien, die ausgeschlossen werden sollen. Das vorletzte Argument ist die Wartezeit nach der letzten Zugriffszeit. Das letzte Argument ist das zu untersuchende Verzeichnis.


4
2018-05-29 21:31





Ab Fedora 18 /tmp ist montiert auf tmpfs (d. h. RAM) standardmäßig und somit beim Ausschalten gelöscht.

Dieses Verhalten kann durch die Ausgabe deaktiviert werden systemctl mask tmp.mount und neustarten (und erneut aktiviert durch Ausgabe systemctl unmask tmp.mount und reboot), und dann /tmp wird auf dem montiert werden / Dateisystem und kann von gesteuert werden /usr/lib/tmpfiles.d/tmp.conf die Einstellungen.

Sehen http://fedoraproject.org/wiki/Features/tmp-on-tmpfs und man tmpfiles.d für mehr Details zu jedem Fall.


4
2018-01-10 14:15





Unter openSUSE 13.2 konnte das Löschverhalten mit der folgenden Variablen in sysconfig gesteuert werden.

  • MAX_DAYS_IN_TMP
  • MAX_DAYS_IN_LONG_TMP
  • TMP_DIRS_TO_CLEAR
  • LONG_TMP_DIRS_TO_CLEAR
  • OWNER_TO_KEEP_IN_TMP
  • CLEAR_TMP_DIRS_AT_BOOTUP

Du könntest diese Variablen modifizieren durch (die Verwendung jeder Variablen könnte dort auch gefunden werden)

  1. Bearbeiten Sie die /etc/sysconfig/cron Datei manuell in der Befehlszeile.
  2. Öffne Yast und navigiere zu System -> / etc / sysconfig Editor -> System -> Cron

3
2017-11-15 13:45





Noch besser wäre eine nette allgemeine Art, es zu kontrollieren! (Etwas wie 'jeden Tag um 3 Uhr morgens, löschen Sie alle / tmp-Dateien älter als 60 Tage, aber löschen Sie das Verzeichnis nicht beim Neustart')

Sorta-tempy-Dateien, die beim Booten nicht gelöscht werden sollen, gehen in / var / tmp

Dafür ist es da :-)


2
2018-04-07 05:01