Wann wird / tmp gelöscht?

143

Ich möchte verschiedene Dateien /tmpeinfügen und habe mich über die Regeln zum Löschen von Dateien gewundert.

Ich stelle mir vor, dass es für verschiedene Distributionen unterschiedlich ist, und ich interessiere mich besonders für Ubuntu- und Fedora-Desktopversionen.

Aber ein guter allgemeiner Weg, das herauszufinden, wäre eine großartige Sache.

Noch besser wäre eine gute allgemeine Möglichkeit, dies zu kontrollieren! (So ​​etwas wie "Jeden Tag um 3 Uhr morgens alle /tmpDateien löschen , die älter als 60 Tage sind, aber das Verzeichnis beim Neustart nicht löschen")

John Lawrence Aspden
quelle
Related: askubuntu.com/questions/20783/…
Ciro Santilli am

Antworten:

155

Das hängt von Ihrer Distribution ab. Auf einigen Systemen wird es nur beim Booten gelöscht, auf anderen werden Cronjobs ausgeführt, bei denen Elemente gelöscht werden, die älter als n Stunden sind.

  • Auf Debian-ähnlichen Systemen: beim Booten (die Regeln sind in definiert /etc/default/rcS).
  • Auf RedHat-ähnlichen Systemen: nach Alter (RHEL6 war es /etc/cron.daily/tmpwatch; RHEL7 und RedHat-ähnlich mit systemd ist es konfiguriert /usr/lib/tmpfiles.d/tmp.conf, aufgerufen von systemd-tmpfiles-clean.service).
  • Auf Gentoo /etc/conf.d/bootmisc.
kba
quelle
19
Unabhängig davon, wann dies geschieht, ist der einzige sichere Moment im Allgemeinen der Start unmittelbar nach dem Mounten, da bei laufenden Prozessen möglicherweise Dateien gesperrt sind und diese nicht gelöscht werden sollten.
6.
Es sind auch Pakete verfügbar, mit denen Sie diese regelmäßig entfernen können.
Samuel Edwin Ward
2
Auf RedHat-ähnlichen Systemen mit systemd (centos7 / rhel7) wird es in /usr/lib/tmpfiles.d/tmp.conf konfiguriert. Es wird vom Ziel von systemd aufgerufen systemd-tmpfiles-clean.service.
Franklin Piat
1
Bei älteren Debian- tmpreaperVersionen können Sie das Paket in Betracht ziehen , dessen gespaltene Version tmpwatch.
Věroš K.
Ubuntu 19.04:cat: /etc/default/rcS: No such file or directory
Boris
24

Auf CentOS (und ich nehme an Fedora) gibt es einen Job in /etc/cron.daily, der aufgerufen wird tmpwatch. Dies wird ausgeführt /usr/sbin/tmpwatch, wodurch Dateien gelöscht werden, auf die in der angegebenen Anzahl von Stunden nicht zugegriffen wurde. Das heißt, das Standardverhalten besteht darin, zu überprüfen atime, ob die Datei kürzlich verwendet wurde.

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

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

cjc
quelle
Ich habe dies nicht auf CentOS 7.4.
Kevin Lemaire
@KevinLemaire Die Funktionalität wurde in einen systemd-Dienst verschoben. lists.centos.org/pipermail/centos/2014-October/147155.html
cjc
Wenn Sie die tmpwatch-Datei nicht gefunden haben, können Sie tmpwatch mityum install tmpwatch
Ng Sek Long
Kann ich tmpwatch für andere Distributionen bekommen? Hört sich toll an. Ich bin auf debian-basierter Distribution
Jonathan
sudo find /tmp -type f -atime +10 -deletetmp-Dateien, auf die seit 10 Tagen nicht mehr zugegriffen wurde, werden mit Sorgfalt gelöscht
Jonathan
13

Unter Ubuntu 11.10, das ich verwende, gibt es ein Upstart- Skript /etc/init/mounted-tmp.conf. Am Anfang steht:

# 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 mehr Details lesen, aber im Allgemeinen /tmpwird es gereinigt, wenn es entweder montiert oder /usrmontiert ist. Dies geschieht regelmäßig beim Booten, sodass diese /tmpReinigung bei jedem Booten ausgeführt wird.

In haben /etc/default/rcSSie TMPTIMEfestgelegt, welches im obigen Init-Skript verwendet wird, um die beiden findBefehle an ihrem Ende zu speisen - im Grunde wird das Löschen von Dateien basierend auf ihren Zeiten gesteuert (modifiziert, geändert, zugegriffen).

icyrock.com
quelle
5

Unter RHEL 6.2 werden die Dateien in / tmp von tmpwatch gelöscht, wenn innerhalb von 10 Tagen nicht mehr 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 Dateien, die ausgeschlossen werden sollen. Das vorletzte Argument ist die Wartezeit nach der letzten Zugriffszeit. Das letzte Argument ist das zu untersuchende Verzeichnis.

Johnjamesmiller
quelle
5

Ab Fedora 18 /tmpist es tmpfsstandardmäßig aktiviert (dh RAM) und wird daher beim Ausschalten gelöscht.

Dieses Verhalten kann durch Ausstellen systemctl mask tmp.mountund Neustarten deaktiviert werden (und durch Ausstellen systemctl unmask tmp.mountund Neustarten wieder aktiviert werden ). Anschließend /tmpwird es auf dem /Dateisystem bereitgestellt und kann durch /usr/lib/tmpfiles.d/tmp.confEinstellungen gesteuert werden .

Siehe http://fedoraproject.org/wiki/Features/tmp-on-tmpfs und man tmpfiles.dfür weitere Details zu den einzelnen Fall.

Skippy le Grand Gourou
quelle
3

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

Sie können diese Variablen ändern, indem Sie (die Verwendung jeder Variablen finden Sie auch dort)

  1. Bearbeiten Sie die /etc/sysconfig/cronDatei manuell in der Befehlszeile.
  2. Öffnen Sie Yast und navigieren Sie zu System -> / etc / sysconfig Editor -> System -> Cron
Leodream
quelle
2

Noch besser wäre eine gute allgemeine Möglichkeit, dies zu kontrollieren! (So ​​etwas wie "Jeden Tag um 3 Uhr morgens alle / tmp-Dateien löschen, die älter als 60 Tage sind, aber das Verzeichnis beim Neustart nicht löschen")

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

Dafür ist es da :-)

nemo
quelle