winlin
Goto Top

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  

Content-Key: 291598

Url: https://administrator.de/contentid/291598

Printed on: April 20, 2024 at 04:04 o'clock

Member: maretz
maretz Dec 23, 2015 at 14:14:37 (UTC)
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
Member: Lochkartenstanzer
Lochkartenstanzer Dec 23, 2015 updated at 15:14:43 (UTC)
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
Mitglied: 108012
108012 Dec 24, 2015 at 03:13:33 (UTC)
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
Member: winlin
winlin Dec 24, 2015 at 07:20:21 (UTC)
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  
Member: winlin
winlin Dec 24, 2015 at 07:36:51 (UTC)
Goto Top
alle 30 minuten im backup verzeichnis nach dateien suchen die "backupdata" enthalten - diese dann löschen und keine fehlerausgabe
Member: winlin
winlin Dec 24, 2015 at 07:43:16 (UTC)
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...
Member: winlin
winlin Dec 24, 2015 at 07:52:08 (UTC)
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....
Mitglied: 122990
Solution 122990 Dec 24, 2015, updated at Jan 12, 2016 at 18:46:26 (UTC)
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