Wie wird das /tmp
Verzeichnis aufgeräumt? Ist es automatisch? Wenn ja, wie oft wird es aufgeräumt?
Wie wird das /tmp
Verzeichnis aufgeräumt? Ist es automatisch? Wenn ja, wie oft wird es aufgeräumt?
Antworten:
Hinweis! Diese Antwort ist veraltet seit mindestens Ubuntu 14.04. Sehen Sie sich die anderen Antworten für die aktuelle Situation an und stimmen Sie ihnen mit Wut zu, wenn sie sich als richtig erweisen. Schreibe auch einen Kommentar, damit ich hier den Link zu der aktuellen richtigen Antwort setzen kann.
Für 14.04 siehe https://askubuntu.com/a/759048/1366
Für 16.10 siehe https://askubuntu.com/a/857154/453746
Alte Antwort von 2011:
Die Bereinigung /tmp
erfolgt über das Upstart-Skript /etc/init/mounted-tmp.conf
. Das Skript wird bei jedem Mounten von upstart ausgeführt /tmp
. Praktisch bedeutet das bei jedem Boot.
Das Skript macht ungefähr Folgendes: Wenn eine Datei /tmp
älter als $TMPTIME
Tage ist, wird sie gelöscht.
Der Standardwert $TMPTIME
ist 0, was bedeutet, dass alle Dateien und Verzeichnisse in /tmp
gelöscht werden. $TMPTIME
ist eine Umgebungsvariable, die in definiert ist /etc/default/rcS
.
Das Verzeichnis wird standardmäßig bei jedem Start gelöscht, da TMPTIME
es standardmäßig 0 ist.
Hier können Sie die Uhrzeit in der folgenden Datei ändern:
/etc/default/rcS
TMPTIME
gibt an, wie oft das tmp dir in Tagen gelöscht werden soll
tmpreaper
eine Chance geben.
tmpwatch
sollte ein geeignetes Werkzeug sein.
Während der /tmp
Ordner kein Ort zum langfristigen Speichern von Dateien ist, möchten Sie gelegentlich die Dinge ein wenig länger als beim nächsten Neustart aufbewahren , was auf Ubuntu-Systemen der Standard ist. Ich kenne ein oder zwei Male, in die ich /tmp
während des Testens etwas heruntergeladen , nach Änderungen neu gestartet und dann die ursprünglichen Daten wieder verloren habe. Dies kann geändert werden, wenn Sie Ihre /tmp
Dateien länger aufbewahren möchten.
Ändern der /tmp
Aufräumhäufigkeit
Die Standardeinstellung, die Ihr System anweist, /tmp
beim Neustart zu löschen, ist in der /etc/default/rcS
Datei enthalten. Der Wert, den wir betrachten, ist TMPTIME
.
Der aktuelle Wert von TMPTIME=0
sagt, dass Dateien trotz des Alters der Datei beim Neustart gelöscht werden. Durch Ändern dieses Werts in eine andere (positive) Zahl wird die Anzahl der Tage geändert, die eine Datei überleben kann /tmp
.
TMPTIME=7
Mit dieser Einstellung können Dateien bis zu /tmp
einem Alter von einer Woche gespeichert und beim nächsten Neustart gelöscht werden. Eine negative Zahl ( TMPTIME=-1
) weist das System an, niemals etwas in zu löschen /tmp
. Dies ist wahrscheinlich nicht etwas, das Sie wollen, aber verfügbar ist.
/etc/init/mounted-temp.conf
, aber es hat die Linie start on mounted MOUNTPOINT=/tmp
, die mich denken lässt, dass es nicht anwendbar ist.
/var/tmp
anstelle von ab /tmp
.
Ich überprüfe dies auf Ubuntu 16.10. Ich kann bestätigen, dass die Bearbeitung von / etc / default / rcS keinerlei Auswirkungen mehr hat und die Dateien in tmp durch einen Neustart gelöscht werden, unabhängig davon, was Sie in diese Datei einfügen. Wie andere erwähnen, wird tmpreaper nicht mehr verwendet.
Ich denke, die richtige Antwort ist, dass Ubuntu 16.10 ein neues Setup hat. Es gibt einen Ordner /etc/tmpfiles.d, der in der Manpage "tmpfiles.d" dokumentiert ist. In diesem Ordner sollte eine Konfigurationsdatei abgelegt werden, um zu steuern, ob / tmp gelöscht werden soll. Folgendes tue ich, um zu verhindern, dass Neustarts Dateien in / tmp löschen, sofern sie nicht 20 Tage alt sind:
#/etc/tmpfiles.d/tmp.conf
d /tmp 1777 root root 20d
Ersetzen Sie "20d" durch "-", wenn Sie niemals möchten, dass Dateien gelöscht werden. Dies ist mein Bestes, diese Manpage ist fast undurchdringlich mit Details.
Der Vorteil des neuen Setups besteht darin, dass ein File Cleaner auch dann ausgeführt werden kann, wenn das System nicht neu gestartet wird (wie bei einem immer auf dem Server befindlichen System). Das ist ein großes Plus, denke ich.
man tmpfiles.d
d /tmp/ - - - 20d
systemctl start systemd-tmpfiles-clean
In Ubuntu 14.04 wird dies von gemacht tmpreaper
, was täglich von cron (from /etc/cron.daily
) aufgerufen wird . Das Programm kann über /etc/default/rcS
und konfiguriert werden /etc/tmpreaper.conf
.
Es wird bei jedem Neustart bereinigt.
tmpreaper
.
In einem systemd
Ubuntu (15.10 und neuer) wird dies von systemd unter Verwendung des systemd-tmpfiles-clean
Dienstes und des Timers durchgeführt:
$ systemctl cat systemd-tmpfiles-clean.service
# /lib/systemd/system/systemd-tmpfiles-clean.service
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs.target time-sync.target
Before=shutdown.target
[Service]
Type=oneshot
ExecStart=/bin/systemd-tmpfiles --clean
IOSchedulingClass=idle
Und
$ systemctl cat systemd-tmpfiles-clean.timer
# /lib/systemd/system/systemd-tmpfiles-clean.timer
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
Also systemd-tmpfiles-clean
läuft beim runterfahren und einmal am Tag anders. Die Dateien , die es reinigt kann erweitert werden , unter Verwendung der /etc/tmpfiles.d
in den genannten anderen Antwort .
Sie können das Timerverhalten selbst mit systemctl edit systemd-tmpfiles-clean.timer
und mit verschiedenen Timer
Systemkonfigurationsoptionen ändern (siehe man 5 systemd.timer
).
/tmp
immer noch nicht aufgeräumt. und ich brauche es, um aufgeräumt zu werden. Selbst ein manueller Start sudo systemctl start systemd-tmpfiles-clean
reicht nicht aus. Irgendwelche Ideen warum?
Auf einem unserer Server mit Ubuntu haben wir ein Skript zum Entfernen von Dateien in / tmp, das jede Nacht ausgeführt wird.
Das Skript lautet:
#!/bin/sh
# Clean file and dirs more than 3 days old in /tmp nightly
/usr/bin/find /tmp -type f -atime +2 -mtime +2 |xargs /bin/rm -f &&
/usr/bin/find /tmp -type d -mtime +2 -exec /bin/rm -rf '{}' \; &&
/usr/bin/find /tmp -type l -ctime +2 |xargs /bin/rm -f &&
/usr/bin/find -L /tmp -mtime +2 -print -exec rm -f {} \;
Speichern Sie einfach den Inhalt in einer Datei, und erstellen Sie einen Cron-Eintrag, um die Datei auszuführen. Da dies ein Webserver ist, möchten wir ihn aus offensichtlichen Gründen nicht neu starten.
ln -s /usr /tmp/kaboom
oder sogar ln -s /* /tmp/
...
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
/ etc / fstab eingegeben.