Dateien > als N Stunden löschen per Shell-Script

Hallo!

Kann mir jemand von den Wissenden hier helfen? Weiß nicht, ob es einfach zu lösen ist: Ich suche eine Möglichkeit in einem tmp Verzeichnis per Cron ein Script auszuführen, welches im Ordner befindliche Dateien die älter als vier Stunden sind, löscht. Betriebsystem ist Debian Squeeze.

Hallo Shoto,

eine gute Anleitung zum realisieren deines Problems findest du hier:
http://www.oreilly.de/german/freebooks/rlinux3ger/ch…
Jedoch würde ich dir nicht empfehlen den /tmp-Ordner während des Betriebes zu leeren, dort werden auch Dateien abgelegt die für den laufenden Betrieb wichtig sind und noch dafür gebraucht werden.

Normalerweise wird der /tmp-Ordner beim Neustart geleert, die dafür verantwortliche Datei: /etc/defaults/rcS
Der Eintrag TMPTIME=0 bedeutet, dass alles, was im /tmp-Ordner älter als 0 Tage ist, gelöscht wird.
TMPTIME=1 verhindert das löschen.

Einen schönen Tag
it-nerd

Hiho

Ich suche eine Möglichkeit in einem
tmp Verzeichnis per Cron ein Script auszuführen, welches im
Ordner befindliche Dateien die älter als vier Stunden sind,
löscht. Betriebsystem ist Debian Squeeze.

Ja, das geht sehr einfach:
> find /tmp -mmin +240 -exec rm {} ;

Der Befehl find findet Dateien hier:

  • im Ordner /tmp
  • mit einer Änderungszeit die mehr(+) als 4*60min zurückliegt
  • und führt danach für jede dieser Dateien den Befehl rm aus (löschen)

Ich empfehle mit diesem Befehl aber ÄUßERSTE VORSICHT, da man sich mit einem kleinen Tippfehler sehr, sehr schnell das System zerschießen kann. Die angegebene Zeile habe ich gestestet, wenn du sonstige Anpassungen daran vornehmen möchtest, empfehle ich als Lektüre
> man find
(auch hier zu finden http://linux.about.com/od/commands/l/blcmdl1_find.htm)
und
http://de.wikipedia.org/wiki/Find
(in der englischen Wikipedia gibts sogar noch mehr)

Bei unsicherheiten einfach mal voher statt mit der exec-Option mit der print-Option starten, dann wird nur angezeigt was gefunden wurde:
> find /tmp -mmin +240 -print

Wenn du das ganze automatisieren möchtest musst solltest du du deinen (gestesteten! Du siehst dann vermutlich keine Fehlermeldungen mehr!) in /etc/cron.d/daily hinzufügen, ist dein PC dagegen ein ganz normaler Desktop-PC wird es völlig genügen, den eingebauten Mechanismus zum Leeren des TMP-Verzeichnisses zu nutzen, dessen Säuberungsinterval du in /etc/default/rcS mit der Option TMPTIME=0 (0 bedeutet bei jedem Neustart, andere Zahlen sind Tagesintervalle) einstellen kannst.

Viel Erfolg