PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : /TMP einfach gefahrlos löschen ??



Seiten : [1] 2

möppel@linux
28.11.05, 21:10
Als Neuling in Sachen Linux und Ordnungsfanatiker in Sachen Dateisystem frage ich mich, ob ich eigentlich die Dateien die automatisch oder durch mich manuell in /TMP abgelegt werden einfach so gelöscht werden können. Oder muss ich warten bis das System das ggfs. von selbst erledigt ?

jacky0815
28.11.05, 21:12
sollte das system von zeit zu zeit von selbst erledigen. Beim starten oder herunterfahren kann alles komplett und gefahrlos gelöscht werden.
Wärend des betriebs ist da schon zu differenzieren. Ich würde z.B. keine tmp-dateien von KDE löschen, wenn KDE läuft. Kann gut gehen, muss aber nicht.

möppel@linux
28.11.05, 21:15
sollte das system von zeit zu zeit von selbst erledigen. Beim starten oder herunterfahren kann alles komplett und gefahrlos gelöscht werden.
Wärend des betriebs ist da schon zu differenzieren. Ich würde z.B. keine tmp-dateien von KDE löschen, wenn KDE läuft. Kann gut gehen, muss aber nicht.

Meinst Du automatisch per Script bei Start oder herunterfahren ? Ich benutze nicht KDE sondern Gnome, ist es da anders vom "Risiko" her ?

jacky0815
28.11.05, 21:18
Meinst Du automatisch per Script bei Start oder herunterfahren ? Ich benutze nicht KDE sondern Gnome, ist es da anders vom "Risiko" her ?

Ja per script ist wohl ganz praktisch :D
KDE war nur ein Bsp. Das trifft für alle programme zu. wenn Gnome noch läuft nichts von Gnome oder wenn mc läuft natürlich keine tmp-datein von mc löschen usw.

möppel@linux
28.11.05, 22:04
Wäre es vermessen zu fragen wie so ein Script aussehen würde, dass beim Beenden den TMP Pfad leert ?

Pasulke
28.11.05, 22:18
Hallo, laut Deiner Signatur benutzt Du SuSE. Hier kannst Du über Yast --> System --> Editor für sysconfig, den Eintrag 'clear_tmp_dirs_at_bootup' aktivieren.

Ciao

möppel@linux
28.11.05, 22:25
Perfekt, genau das habe ich gesucht !!!

pavilionix
29.11.05, 10:24
und wenn man nicht suse benutzt.... wie sollte so ein script aussehen?

sirmoloch
29.11.05, 10:27
#!/bin/sh
rm -rf /tmp/*

Welch Skripting-Leistung...:rolleyes:
Reicht vollkommen aus wenn man es an die richtige Stelle packt. Aber wer will denn hier mit Eigeninitiative geizen? ;)

nordi
29.11.05, 20:57
Welch Skripting-Leistung...:rolleyes:

Jetzt roll mal nicht mit den Augen, deine Variante funktioniert nämlich nicht korrekt. Richtig muss das heißen:



find /tmp -mindepth 1 -exec rm -rf -- \{\} \;

Ich denke mal so sollte das korrekt funktionieren. Und zwar möglichst direkt nach dem Mounten der Festplatte, weil man sonst Gefahr läuft eine aktuelle (=noch benötigte) Datei zu löschen.

LX-Ben
29.11.05, 21:18
Und aus eigener Erfahrung wäre ich da sehr zurückhaltend - ein 'rm -rf /tmp/*' im laufenden Betrieb führt zum Nirwana beim nächsten Linux-Start - das script darf also nur in den automatischen Startvorgang eingebunden werden.

möppel@linux
30.11.05, 07:49
Und aus eigener Erfahrung wäre ich da sehr zurückhaltend - ein 'rm -rf /tmp/*' im laufenden Betrieb führt zum Nirwana beim nächsten Linux-Start - das script darf also nur in den automatischen Startvorgang eingebunden werden.

Also ich habe jetzt über Yast die Option 'clear_tmp_dirs_at_bootup' auf yes gesetzt und bin mehr als zufrieden mit der Lösung. Einfacher geht es nicht...

echo
30.11.05, 08:06
Hallo,
ich würde hier an dieser stelle das tmpwatch programm benutzen (von redhat, aber für jede distri zu haben). dieses such nach dateien die nicht mehr im zugriff seit einer gewissen zeitspanne waren und löscht sie.

sirmoloch
01.12.05, 09:28
Jetzt roll mal nicht mit den Augen, deine Variante funktioniert nämlich nicht korrekt. Richtig muss das heißen

Und wieso funktionierts nicht richtig? Würde mich mal interessieren.

temal
01.12.05, 09:50
Und wieso funktionierts nicht richtig? Würde mich mal interessieren.

Weil Dateien/Verzeichnisse, die mit einem Punkt beginnen nicht gelöscht werden. :rolleyes:

sirmoloch
01.12.05, 10:01
Urgs, daran hätte ich denken sollen. Dann ist find natürlich die sinnvollere Lösung.
Ich geh wieder in die Ecke. ;)

nordi
01.12.05, 23:02
Weil Dateien/Verzeichnisse, die mit einem Punkt beginnen nicht gelöscht werden. :rolleyes:
Außerdem werden keine Dateien gelöscht die mit einem Minuszeichen beginnen: die hält rm bei dir für Optionen. Wenn ich die Datei /tmp/-i erstelle verhindere ich, dass dein System hochfährt. Dann wartet es nämlich darauf dass du das Löschen jeder einzelnen Datei bestätigst. Ganz übler DoS wenn sich dabei um einen Server handelt. :ugly:

Außerdem gibt es ein Problem wenn in /tmp einige tausend Dateien stehen (falls z.B. irgendein Programm ganz großen Mist gebaut hat). Dann funktioniert der * nämlich nicht mehr und du bist auf "find" angewiesen. Das Säubern von /tmp funktioniert also dann nicht richtig wenn es dringend gebraucht wird. Keine gute Idee.

Wie man also sieht ist Dateien löschen alles andere als trivial. :D

derJoe
02.12.05, 14:44
Kann man nicht einfach das ganze /tmp-Verzeichnis löschen und neu erstellen? Dürfte wohl die einfachste Skript-Lösung sein.
rm -rf /tmp
mkdir /tmp
chmod ---- /tmp (hier müssten natürlich noch die richtigen Werte eingesetzt werden)

Gruß

derJoe

nordi
02.12.05, 15:32
Und wenn /tmp von einer extra Partition liegt? Ich will mir irgendwie garnicht vorstellen was passiert wenn man versucht einen Mountpoint zu löschen... Als allgemeingültige Version also nicht so gut.

jacky0815
02.12.05, 16:04
Wenn wir schon bei kreativen Lösungen sind :D :

ich hab tmp auf ner extra partition und erstell jedes mal das filesystem neu, nachdem ich per zufall nen schönen key für dm-crypt erzeugt habe :o

L00NIX
02.12.05, 17:33
Auch ne nette Variante (TMPFS):

Eintrag in /etc/fstab:


...
/dev/shm /tmp tmpfs rw,bind 0 0


Voraussetzung ist, dass /dev/shm mit TMPFS eingerichtet ist. TMPFS ist ein temporäres Dateisystem, dass den Hauptspeicher bzw. die SWAP-Partition benutzt und die sind beide beim Hochfahren leer (ganz ohne Skript).

Anm.:
Unter /tmp liegen in der Regel keine großen Datenmengen, dafür ist /var/tmp da!

ThorstenHirsch
02.12.05, 18:40
Wie richte ich denn /dev/shm mit TMPFS ein?

edit: oh, ich sehe gerade, das is ja bei Arch schon standardmäßig so. sehr schön :)

L00NIX
02.12.05, 19:04
Nachtrag zu dem TMPFS oben:

Das "bind" in der fstab ist notwendig, da tmpfs schon unter /dev/shm gemoutet ist. Somit ist tmpfs dann zweimal eingehängt (Inhalt von /tmp und /dev/shm sind identisch!).

rowo
03.12.05, 19:33
Jetzt roll mal nicht mit den Augen, deine Variante funktioniert nämlich nicht korrekt. Richtig muss das heißen:



find /tmp -mindepth 1 -exec rm -rf -- \{\} \;

Ich denke mal so sollte das korrekt funktionieren. Und zwar möglichst direkt nach dem Mounten der Festplatte, weil man sonst Gefahr läuft eine aktuelle (=noch benötigte) Datei zu löschen.

Oder als eine der letzten Aktionen vor dem umount beim Herunterfahren.

rowo
03.12.05, 22:12
Um bei jedem Systemstart das Verzeichnis /tmp zu leeren, habe ich bei SuSE Linux 9 und 10 an die Datei /etc/init.d/boot.local folgenden Code angehängt:



echo "Cleaning up /tmp..."
find /tmp -mindepth 1 -exec rm -rf -- \{\} \;
echo "/tmp is clean"

mkdir /tmp/.ICE-unix
chmod 777 /tmp/.ICE-unix
chmod a+t /tmp/.ICE-unix


Wenn man keine Fehlermeldungen sehen will, kann man diese auch umlenken:



find /tmp -mindepth 1 -exec rm -rf -- \{\} \; 2>>/dev/null


Das Verzeichnis /tmp/.ICE-unix muß dem Benutzer root gehören, sonst startet der Desktop nicht, daher habe ich es an dieser Stelle direkt neu angelegt.

L00NIX
04.12.05, 10:33
A propos SuSE:

Meine letzten Erfahrungen damit liegen schon etwas zurück (6.0 - 6.3) aber damals gab es eine Einstellung im YaST (damals noch Version 1), mit der man die maximale Aufbewahrungsdauer für Dateien unter /tmp festlegen konnte. Ein Cron-Skript hat sich dann auf die Suche nach "veralteten" temporären Dateien gemacht und diese dann entfernt.

Hat SuSE das umgestellt?


Gruß
L00NIX


...jetzt mit debian sarge unterwegs...

drcux
04.12.05, 10:43
nein, kann man immer noch im Editor für Sysconfig einstellen

L00NIX
05.12.05, 19:59
nein, kann man immer noch im Editor für Sysconfig einstellen

Ein einfaches du -hs /tmp wird zeigen, dass unter /tmp fast keine Daten liegen. Somit ist Löschen so gut wie überflüssig.

Da man weiß, dass das System nach eigenen Regeln mit diesem Verzeichnis umgeht, legt der vernünftige Nutzer dort auch keine Daten ab.

Kennt man die Regeln, kann man das tun, sollte man aber nicht. Ich persönlich bevorzuge $HOME/tmp, in dem nur Daten liegen, die von jetzt auf nachher verschwinden können, ohne dass ich sie vermisse.

Nur so nebenbei...

temal
05.12.05, 20:15
Außerdem werden keine Dateien gelöscht die mit einem Minuszeichen beginnen: die hält rm bei dir für Optionen. Wenn ich die Datei /tmp/-i erstelle verhindere ich, dass dein System hochfährt. Dann wartet es nämlich darauf dass du das Löschen jeder einzelnen Datei bestätigst. Ganz übler DoS wenn sich dabei um einen Server handelt. :ugly:

Das halte ich für ein Gerücht. Bei SLES9 jedenfalls ist es nicht so. /tmp ist nach einem Reboot leer. Obs jetzt neu angelegt oder sonst wie geleert wurde, kann ich nicht sagen. ;)

nordi
05.12.05, 23:03
Bei SLES9 jedenfalls ist es nicht so. /tmp ist nach einem Reboot leer.Sicher, bei SLES9 hat sich aber auch jemand darum gekümmert der sich damit auskennt. Siehe /etc/init.d/boot.cleanup, die machen das ganz ähnlich wie bei meiner Variante (oder andersrum, ich hab mir das Skript schon vor einiger Zeit mal genauer angeschaut).

Aber probier es doch selber mal aus:
mkdir /tmp/foo
cd /tmp/foo
touch -- -i j
rm -f *

Und er wird dich trotz -f fragen, ob du die Datei j wirklich löschen willst. :D