Wie reinige ich / tmp?

74
rizhas@rizhas-laptop:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda7        67G   58G  5,2G  92% /
none            4,0K     0  4,0K   0% /sys/fs/cgroup
udev            1,5G   12K  1,5G   1% /dev
tmpfs           303M  1,2M  302M   1% /run
none            5,0M     0  5,0M   0% /run/lock
none            1,5G  348K  1,5G   1% /run/shm
none            100M   80K  100M   1% /run/user
overflow        1,0M  1,0M     0 100% /tmp
overflow        1,0M  1,0M     0 100% /tmp

Wie wird aufgeräumt /tmp?

Rizhas
quelle
1
Wahrscheinlich unter Unix & Linux beantwortet . Ich bin mir nicht sicher, ob dies zu einem Duplikat dieser Frage führt.
DRC
nein @drc aber gut zu finden. Ich habe einen Link von dort verwendet, um meine Antwort zu aktualisieren.
Rinzwind
1
Siehe auch Wie wird das Verzeichnis / tmp aufgeräumt?
Wiedereinsetzung von Monica - M. Schröder am

Antworten:

117

/ tmp soll beim Neustart bereinigt werden, aber wenn Sie nicht neu starten (was für Server normal ist), wird die Bereinigung nicht durchgeführt

find /tmp -ctime +10 -exec rm -rf {} +

löscht alle Dateien und Ordner, die älter als 10 Tage sind. Vielleicht möchten Sie es dem täglichen cron hinzufügen.


AKTUALISIEREN

In den Kommentaren unten empfiehlt @sfussenegger ein etwas anderes Format dieses Befehls, das möglicherweise besser zu Ihren Anforderungen und zu dem System passt, auf dem Sie arbeiten.

sudo find /tmp -type f -atime +10 -delete

Hier wird der Befehl verwendet sudo, um sicherzustellen, dass alles gelöscht wird (oder Sie können ihn als Root ausführen). Dabei werden Dateien bearbeitet, auf die seit mehr als 10 Tagen kein Zugriff mehr erfolgt ist, und nur Dateien, nicht Ordner, gelöscht . Es verwendet auch -deleteauszuführen, um zu vermeiden rmBefehl

Andrei R
quelle
2
statt Erstellungszeit (-ctime) Sie können Zugriffszeit (-atime) stattdessen verwenden - natürlich nur , wenn das Dateisystem diese Informationen hält (Check für noatime in / etc / fstab)
sfussenegger
7
ok, bitte trage dich mit mir, aber es gibt noch eine Sache: du willst nur Dateien durchsuchen ( -type f). Andernfalls stellen Sie möglicherweise fest, dass auf das übergeordnete Element eines Verzeichnisbaums seit einiger Zeit nicht mehr zugegriffen wurde, und löschen den gesamten Inhalt, der möglicherweise noch verwendet wird. Das letzte Kommando, das ich empfehlen würde, istsudo find /tmp -type f -atime +10 -delete
sfussenegger
2
@sfussenegger, könntest du vielleicht deine Kommentare zu einer Antwort bewerben? Ich denke, es ist besser, als in den Kommentaren "versteckt" zu sein.
Jonathan
34

Sie können davon ausgehen, dass alles in einem tmp-Verzeichnis (/ tmp / / usr / tmp usw.) gelöscht werden kann. BEVOR Sie mit dem Löschen beginnen, stoppen Sie alle Programme und Dienste, die Sie verwenden, da / tmp / von Programmen zum temporären Speichern von Informationen für diese Sitzung verwendet werden kann. Also mach ein sudo service mysql stopund sudo service apache2 stopwenn du einen MySQL und / oder Apache hast. Der Name der Dateien im Verzeichnis / tmp / gibt meistens einen Hinweis darauf, zu welchem ​​Programm sie gehören.

Also von der Kommandozeile ...

cd /tmp/
pwd
sudo rm -r *

Leert das Verzeichnis / tmp / und entfernt alle Dateien und Unterverzeichnisse. Achten Sie darauf, es richtig einzugeben. Der dortige Befehl pwdist nicht erforderlich, sollte aber angezeigt werden /tmp.

Wenn Sie es interaktiv möchten (so müssen Sie das Löschen bestätigen):

cd /tmp/
sudo rm -ri *

Erwähnenswert ist auch, dass ein Neustart / tmp löscht, wie hier gezeigt: Wie wird das Verzeichnis / tmp bereinigt? Wenn / tmp / also nach einem Neustart voller Dateien ist, müssen Sie untersuchen, woher diese Dateien stammen.

Ich möchte auch feststellen, dass 1 MB für / tmp nicht viel Platz ist. Verwenden Sie MySQL? Informationen zur Fehlerbehebung finden Sie unter https://unix.stackexchange.com/a/76058/10017 (danke @drc).

Rinzwind
quelle
2
Das "ohne Schaden" gilt für Dateien, die vor dem letzten Neustart erstellt wurden. Andernfalls könnte es von einem aktuellen Programm verwendet werden und (für dieses Programm) Probleme verursachen. Zum Beispiel habe ich Skripte, die Dateien in / tmp erstellen und diese dann erneut lesen, um die nächsten Verarbeitungsschritte auszuführen . Das Löschen / Abschneiden zwischen diesen Dateien führt zu einer Unterbrechung der Programmaktionen (und kann, abhängig davon, wofür diese Dateien verwendet werden, sogar zu gefährlichen Ergebnissen führen)
Olivier Dulac,
... who –bWenn Sie also ein (Datum des letzten Starts) und anschließend eine Datei / Startzeit zum Zeitpunkt des Startens ( touch ....... /boottime) erstellen , können Sie sicher gehen find /tmp -type f \( ! -newer /boottime \) -delete \;, dass nur Dateien gelöscht werden, die älter sind als der letzte Start
Olivier Dulac,
Darf ich diese Kommentare verwenden, um die Antwort zu erweitern? Wohlgemerkt: das / tmp hier ist wahrscheinlich von MySQL.
Rinzwind
4
Als Person, die mktempmeine Skripte regelmäßig verwendet, bin ich mit der Aussage "ohne Schaden" nicht einverstanden.
Hytromo
2
Wenn /tmpetwas älter als der letzte Neustart ist, haben die Startskripte ihre Arbeit nicht erledigt.
Simon Richter
10

Das tmpreaperProgramm kann verwendet werden, um / tmp regelmäßig zu bereinigen . Dieses Programm löscht alle Daten, auf die in einem bestimmten Zeitraum (normalerweise zwei Wochen) nicht zugegriffen wurde. Damit dies ordnungsgemäß funktioniert, sollte auf dem Dateisystem, auf dem es sich befindet, die atimesOption aktiviert sein. Wenn Sie ein tmpfs verwenden , wie es scheint, sollten Sie in Ordnung sein.

Natürlich löscht ein Neustart auch / tmp , aber das wäre langweilig.

Simon Richter
quelle
Es ist für mich überraschend, dass dies unter Ubuntu und Debian keine Standardoption ist. Es ist ziemlich üblich, dass ich auf relativ unprivilegierte Benutzerprozesse stoße, die / tmp füllen.
Salbei
1
Ja, aber es ist eine Richtlinie, die von einem Systemadministrator festgelegt werden muss. Wenn Sie Dienste mit langer Laufzeit haben, bei denen erwartet wird, dass ihre Daten beibehalten werden, wäre jede Standardeinstellung, jedoch keine Bereinigung, gefährlich.
Simon Richter
7

Das Verzeichnis /tmpbedeutet temporär.

In diesem Verzeichnis werden temporäre Daten gespeichert. Sie müssen nichts löschen, die darin enthaltenen Daten werden nach jedem Neustart automatisch gelöscht.

Wenn Sie dennoch die darin enthaltenen Daten löschen möchten, verwenden Sie

sudo rm -r /tmp/*

Das Löschen ist problemlos möglich, da es sich um temporäre Dateien handelt.

Tarun
quelle
9
Sie sind in dem Sinne temporär, dass sie nach dem Neustart nicht benötigt werden. Das bedeutet nicht, dass sie derzeit nicht benötigt werden oder dass sie in 5
Minuten
5
Es ist nicht wahr, dass dies "kein Problem verursachen wird". Ich habe das einmal gemacht, bevor ich es besser wusste und meine Maschine abgespritzt habe.
Kyle Strand
Siehe auch unix.stackexchange.com/q/11235/38050
Kyle Strand
4

Seien Sie vorsichtig, bevor Sie einen Befehl wie ausführen rm -r ./*. Sobald Sie es ausgeführt haben, ist es sehr schwierig oder unmöglich, Daten wiederherzustellen.

Alles wird entfernt. Stellen Sie sicher, dass das Verzeichnis, in dem Sie löschen, richtig ist.

Es gibt eine sicherere Möglichkeit, mit Dingen umzugehen.

# sudo rm -r /tmp/*

Wenn Sie diesen Befehl versehentlich in Ihrer Shell ausführen history, werden die falschen Dateien nicht gelöscht (es sei denn, Sie behalten sie bei /tmp).


quelle
2

Das /tmpVerzeichnis wurde standardmäßig bei jedem Start gelöscht, da TMPTIMEist 0standardmäßig aktiviert .

Avinash Raj
quelle
1

Wenn Ihr "/ tmp" -Mount auf einem Linux-Dateisystem als Überlauf gemountet ist (häufig mit einer Größe von 1 MB), liegt dies wahrscheinlich daran, dass Sie "/ tmp" nicht als eigene Partition angegeben haben und Ihr Root-Dateisystem gefüllt und "/ tmp" war als Fallback wieder montiert. Um dies zu beheben, nachdem Sie Speicherplatz freigegeben haben, heben Sie einfach die Bereitstellung des Fallbacks auf und es sollte an seinem ursprünglichen Punkt erneut bereitgestellt werden:

sudo umount overflow

wenn das Gerät ausgelastet ist

sudo umount -l overflow
ck reddy
quelle