winlin

Frage zu conjobs

Hallo Leute,

habe ein Problem. Ich habe einen server auf den ich in einem bestimmten verzeichnis sicherungen weglösche mit cron. Wenn ich jetzt in dieses Verzeichnis schaue dann sehe ich das nix gelöscht wird. Kann mir einer helfen was da los ist?

In crontab -e steht:
find /home/USER/backup/ -name backupdata\* -type f -mtime +30 -exec rm '{}' \; 2>/dev/null  
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 291598

Url: https://administrator.de/forum/frage-zu-conjobs-291598.html

Ausgedruckt am: 15.05.2025 um 02:05 Uhr

maretz
maretz 23.12.2015 um 15:14:37 Uhr
Goto Top
Moin,

du hast schon mal rm ohne -r -> damit löscht du zwar dateien aber keine Verzeichnisse...
-type f -> ich meine mich zu errinnern das es meint "Type = File" - wenn du also ein Verzeichnis suchst dann wird der schon nix bringen...

Wenn du das ganze mal manuell ausführst (nur statt rm echo eintragen) - was gibt der dir denn da überhaupt aus?

Btw.: Einen LÖSCHBEFEHL nutzt man nur wenn man sich wirklich sicher ist was dabei rauskommt... Wenn ich dir jetzt sage mach mal nen
-exec rm -rf '/' dann könnte das ggf. der letzte Befehl deines Systems sein... (vermutlich wird er es sein, solltest du also nicht ausprobieren!)

Gruß,

Mike
Lochkartenstanzer
Lochkartenstanzer 23.12.2015 aktualisiert um 16:14:43 Uhr
Goto Top
Zitat von @winlin:


In crontab -e steht:
 find /home/USER/backup/ -name backupdata\* -type f -mtime +30 -exec rm '{}' \; 2>/dev/null
 



Zum einen fehlen da natürlich die Zeitangaben, wann der das ganze machen soll. Da solllte sowas ähnliches wie
0  * 0 0 0  find /home/USER/backup/ -name backupdata\* -type f -mtime +30 -exec rm '{}' \; 2>/dev/null
 

stehen (wobei die Wete natürlich deinen bedürfnissen angepasst werden müssten.

Außerden solltest Du mal mit
find /home/USER/backup/ -name backupdata\* -type f -mtime +30 -exec echo rm '{}' \; 
 
Dir ausgeben lassen, was er denn zu gedenken tut, wenn die Zeile denn ausgeführt würde.

lks
108012
108012 24.12.2015 um 04:13:33 Uhr
Goto Top
Hallo,

Frage zu conjobs
Mach doch mal bitte "cronjobs" draus dann wird es auch schnell über das
Internet oder Google von Leuten gefunden die ein ähnliches Problem haben.

Gruß
Dobby
winlin
winlin 24.12.2015 um 08:20:21 Uhr
Goto Top
also sorry hatte mich falsch ausgedrückt. mit dem cronjob sollen "alte" backups gelöscht werden damit diese nicht die platte zumüllen (Files - keine Verzeichnisse). Kenne mich mich cronjobs net so aus. was heisst das jetzt ganz genau?

crontab -l Ausgabe:

30  *  *  *  *  find /home/USER/backup/ -name backupdata\* -type f -mtime +30 -exec rm '{}' \; 2>/dev/null  
winlin
winlin 24.12.2015 um 08:36:51 Uhr
Goto Top
alle 30 minuten im backup verzeichnis nach dateien suchen die "backupdata" enthalten - diese dann löschen und keine fehlerausgabe
winlin
winlin 24.12.2015 um 08:43:16 Uhr
Goto Top
ich befürchte das dieser cronjob nicht läuft - wie kann ich checken ob er das tut was er auch soll????
Ausgeführt wird der cronjob mit einem backup user der auch die erforderlichen rechte hat - ach ps: es sollen backup dateien gelöscht werden welche sich im homeverzeichnis des backup users befinden...
winlin
winlin 24.12.2015 um 08:52:08 Uhr
Goto Top
cat /etc/crontab ergibt dashier:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

mehr steht in der crontab des isers backup nicht drin....
122990
Lösung 122990 24.12.2015, aktualisiert am 12.01.2016 um 19:46:26 Uhr
Goto Top
Moin,
alle 30 minuten im backup verzeichnis nach dateien suchen die "backupdata" enthalten - diese dann löschen und keine fehlerausgabe
Nein das heißt das immer wenn die Minute auf 30 steht, das Script ausgeführt wird. also nicht alle 30 Minuten sondern jede Stunde um "halb".
Wenn du alle 30 Minuten brauchst schreibst du stattdessen
*/30  *  *  *  * <befehl>
die crontab bearbeitest du mit crontab -e trägst deinen Befehl ein, speicherst und schließt den Editor. Danach ist dieser sofort aktiv geschaltet und läuft zu den angegebenen Zeiten.
Für einen Test ob dein Befehl auch wirklich läuft brauchst du aber jetzt nicht 30 Minuten warten, sondern du kannst das ganz einfach testen indem du ein Testverzeichnis anlegst und dort eine Datei anlegst die älter als 30 Tage ist
mkdir /home/USER/backuptest/
touch -d "40 days ago" /home/USER/backuptest/backupdata.txt  
dann trägst du in die crontab des backupusers "USER" via crontan -u USER -e nur für den Test folgendes ein
*  *  *  *  *  find /home/USER/backuptest/ -type f -name 'backupdata*' -mtime +30 -exec rm '{}' \;  
Die 5 Sternchen bedeuten "jede Minute ausführen".
Überwachen kannst du die Ausführung des CRON-Jobs dann mit
tail -f /var/log/syslog
Übrigens der Find-Befehl läuft hier testweise einwandfrei (auch so direkt eingetragen ) in die crontab, obwohl man sinnvollerweise sowas in externe Skripte einträgt.

Gruß grexit