(Gelöst) automatisches Löschen mit cron

Status
Für weitere Antworten geschlossen.

c.j.klein

New Member
Hallo liebe Forenmitglieder,

nachdem mein PDC sauber läuft und ich eine ordentliche Funktion auch für Mail und Internet gefunden habe, möchte ich mein aktuelles Problem vorstellen.

Ich habe für alle User einen öffentlichen Transferordner,
Code:
/srv/transfer
der - wie der Name schon sagt, für den Austausch von Datein gedacht ist. Nun sind viele von uns, ich eingeschlossen häufig zu faul, vergesslich, mit wichtigeren Dingen beschäftigt um die Dateien dort auch wieder zu löschen. Dafür gibt es ja cron!
Cron - Wikipedia
cron-Index
Newbie-Net Cron

Also fix die cron-tab bearbeiten, ein script (finden sich ja auch diverse im Netz) geschrieben UND..... es tut nicht.

Daher stelle ich hier mal meine cron-tab und mein script ein und hoffe, dass der Fehler schnell zu beheben ist. Vorab meine Frage, welche Dateiendung sollte/kann mein script haben, oder woran muss ich sonst denken?

crontab
Code:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file.
# This file also has a username field, that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

"# m h dom mon dow user	command"
"17 *	* * *	root    run-parts --report /etc/cron.hourly"
"25 6	* * *	root	test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily"
# hier wird täglich um 3:15 der Ordner transfer überprüft und Dateien, die älter sind als 10 Tage gelöscht.
3  15   * * *   root    /etc/cron.daily/transit-clean     
"47 6	* * 7	root	test -x /usr/sbin/anacron || run-parts --report /etc/cron.weekly"
"52 6	1 * *	root	test -x /usr/sbin/anacron || run-parts --report /etc/cron.monthly"
#
und mein script
transit-clean
Code:
# !/bin/bash
# Dateien aus dem Transfer-Ordner löschen, wenn sie älter als 10 Tage sind.
   
   for FILE in $ (find /srv/transfer -type f -ctime +10)
   do
       rm -f $FILE
   done
Ich danke schon mal für Eure hilfreichen Tipps.

mfg
Christian
 
AW: automatisches Löschen mit cron

1.
Code:
3  15   * * *   root    /etc/cron.daily/transit-clean
Der Eintrag ist überflüssig.
Wenn das Script bereits unter /etc/cron.daily liegt, wird es automatisch täglich ausgeführt.

2. Ist das Script ausführbar (x-bit gesetzt)?

3. Syntaxfehler: Leerzeichen zwischen for FILE in $ und (find /srv/transfer -type f -ctime +10)
=>
Code:
for FILE in $(.....);
  do something;
done;
4. Obwohl in der crontab die Pfade gesetzt sind, gleich angewöhnen in Scripten immer mit absoluten Pfaden zu arbeiten.
=>
Code:
/usr/bin/find
/bin/rm
oder
Code:
FIND=`which find 2> /dev/null`;
RM=`which rm 2> /dev/null`;

$FIND /srv/transfer -type f -ctime +10;
...
$RM $FILE;
5.Wozu die for-Schleife?
=> Die exec-Option von find benutzen:
Code:
#!/bin/bash

find /srv/transfer -type f -ctime +10 -exec rm {} \;
 

c.j.klein

New Member
AW: automatisches Löschen mit cron

Hallo b3ll3roph0n

danke für die Hilfestellung, der "x"-bit war nicht gesetzt.
Mal sehen, ob morgen alles aufgeräumt ist.

Werde dann natürlich hier berichten.

mfg
Christian
 

c.j.klein

New Member
AW: automatisches Löschen mit cron

Supi, es tut!

Neben dem kleinen Fehler und dem trippleS Vorschlag (short, stupid and simple) hat mir vor allem der Hinweis geholfen, die Datei AUSFÜHRBAR zu machen.

Hier für alle nochmal mein aktuelles script

transit-clean
Code:
# !/bin/bash
# Dateien aus dem Transfer-Ordner löschen, wenn sie älter als 10 Tage sind.

   find /srv/transfer -type f -ctime +10 -exec rm {} \;
Danke nochmal für die fixe Lösung.:cool:

und auf zum nächsten Thema...

mfg
Christian
 
Status
Für weitere Antworten geschlossen.
Oben